nginx的upstream问题记录

简介:

最近我们用python开发了一套SSO、然后权限系统一起的一次大更新上线,上线后发现SSO无法正常工作,但测试环境一直无问题。

问题描述

问题URL
http://sso.a.com/signin?redirect_uri=http://tomcat
正常URL
http://sso.a.com/signin?redirect_uri=http://b.c.com

排查

检查代码啥的发现没问题,把动态获取的host改成静态的域名,单启进程后正常,问题定位在nginx的负载上.

nginx domain配置文件

upstream tomcat {
         server 10.143.88.240:10086;
}
server {
                listen 80 ;
                server_name xxxx;
                gzip on;
                gzip_static on;
                gzip_vary on;
                gzip_proxied any;
                gzip_min_length     1000;
                gzip_buffers    4 8k;
                gzip_disable    "msie6";
                gzip_http_version 1.1;
                gzip_comp_level 5;
                gzip_types text/plain text/css text/javascript application/javascript application/x-javascript;

                location / {
                        proxy_pass http://tomcat;
                }

}

稍微思考一下,upstream中的name是一个变量,而做为变量即可得到后端地址,而不是直接给后端地址。

处理

将upstream中的name改成实际的域名,在这里即是b.c.com即可以获取,然后工作正常。

查看官主解释

默认情况下,nginx按加权轮转的方式将请求分发到各服务器。 在上面的例子中,每7个请求会通过以下方式分发: 5个请求分到backend1.example.com, 一个请求分到第二个服务器,一个请求分到第三个服务器。 与服务器通信的时候,如果出现错误,请求会被传给下一个服务器,直到所有可用的服务器都被尝试过。 如果所有服务器都返回失败,客户端将会得到最后通信的那个服务器的(失败)响应结果。





本文转自 煮酒品茶 51CTO博客,原文链接:http://blog.51cto.com/cwtea/2057112,如需转载请自行联系原作者

目录
相关文章
|
负载均衡 算法 应用服务中间件
Nginx系列教程(08) - Upstream Server 负载均衡
Nginx系列教程(08) - Upstream Server 负载均衡
548 0
|
6月前
|
网络协议 应用服务中间件 nginx
解决 nginx 启动错误host not found in upstream "XXXX.com“
在前置机上利用nginx进行反向代理的时候,我们会配置proxy_pass。在启动nginx的会报如下错误:host not found in upstream "XXXX.com“
3864 0
|
6月前
|
负载均衡 应用服务中间件 nginx
解决nginx配置负载均衡时invalid host in upstream报错
在Windows环境下,配置Nginx 1.11.5进行负载均衡时遇到问题,服务无法启动。错误日志显示“invalid host in upstream”。检查发现上游服务器列表中,192.168.29.128的主机地址无效。负载均衡配置中,两个服务器地址前误加了"http://"。修正方法是删除上游服务器列表和proxy_pass中的"http://"。问题解决后,Nginx服务应能正常启动。
509 4
解决nginx配置负载均衡时invalid host in upstream报错
|
Java 应用服务中间件 PHP
Nginx——*5 connect() failed (111: Connection refused) while connecting to upstream
Nginx——*5 connect() failed (111: Connection refused) while connecting to upstream
627 0
Nginx——*5 connect() failed (111: Connection refused) while connecting to upstream
|
缓存 负载均衡 Unix
Nginx深入详解之upstream分配方式
Nginx深入详解之upstream分配方式
591 0
|
负载均衡 应用服务中间件 nginx
Nginx之upstream被动式重试机制解读z
Nginx之upstream被动式重试机制解读z
|
应用服务中间件 nginx
Nginx 实战系列之四:upstream 的 max_fails 和 fail_timeout 指标和实战经验
Nginx 实战系列之四:upstream 的 max_fails 和 fail_timeout 指标和实战经验
|
负载均衡 测试技术 Linux
小满Linux(第十一章Nginx-负载均衡upstream)
upstream的基本语法如下,一个upstream需要设置一个名称,这个名称可以在server里面当作proxy主机使用。
158 0
小满Linux(第十一章Nginx-负载均衡upstream)
|
监控 网络协议 应用服务中间件