nginx的upstream问题记录

本文介绍了一次使用Python开发的SSO系统及权限系统更新上线后遇到的问题:SSO功能失效。通过对代码审查未发现问题,最终定位问题出现在Nginx负载均衡配置上,并给出了解决方案。

最近我们用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, 一个请求分到第二个服务器,一个请求分到第三个服务器。 与服务器通信的时候,如果出现错误,请求会被传给下一个服务器,直到所有可用的服务器都被尝试过。 如果所有服务器都返回失败,客户端将会得到最后通信的那个服务器的(失败)响应结果。

转载于:https://blog.51cto.com/cwtea/2057112

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值