Nginx的upstream与server_name命名冲突的bug?
2012-06-06 17:51:26 来源:我爱运维网 评论:0 点击:
今天碰到一例Nginx的upstream命名与server_name命名冲突造成的问题,而且此问题主要出现在一些登录和注销的情况下。
现象:
Nginx服务器发对请求给出的reponse header里面,有个location
是http://w2c.5iops.com/admin/zt
客户端接收到的却是.5iops.com/admin/zt
排查:
Nginx配置:
upstream w2c{
server 10.10.10.112:80 weight=5 max_fails=3 fail_timeout=5s;
server 10.10.10.79:80 backup;
}
server {
server_tokens off;
listen 80;
server_name w2c.5iops.com w2c.5iops.com;
access_log /home/logs/nginx/w2c.5iops.com-access.log main;
error_log /home/logs/nginx/w2c.5iops.com-error.log error;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
location / {
proxy_pass http://w2c;
}
}
看nginx日志有如下信息:
10.208.20.99 w2c.5iops.com - [06/Jun/2012:13:49:15 +0800] "GET /admin/zt/quick/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5io
ps.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.
com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com
/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/zt HTTP/1.0" 302 0
"http://w2c.5iops.com/admin/zt" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0)
Gecko/20100101 Firefox/12.0" "116.228.90.154" "0.007" "127.0.0.1:9000" "302" "0.008" 10.208.20.99 w2c.5iops.com - [06/Jun/2012:13:49:15 +0800] "GET
/admin/zt/quick/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5io
ps.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.
com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com
/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/zt HTTP/1.0"
302 0 "http://w2c.5iops.com/admin/zt" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:12.0)
Gecko/20100101 Firefox/12.0" "116.228.90.154" "0.007" "127.0.0.1:9000" "302" "0.007"
10.208.20.99 w2c.5iops.com - [06/Jun/2012:13:49:15 +0800] "GET
/admin/zt/quick/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5io
ps.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.
com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com
/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/.5iops.com/admin/zt HTTP/1.0" 404 87 "http://w2c.5iops.com/admin/zt" "Mozilla/5.0 (X11; Ubuntu; Linux
i686; rv:12.0) Gecko/20100101 Firefox/12.0" "116.228.90.154" "0.003" "127.0.0.1:9000"
"404" "0.004"
看来是:就那个upstream + proxy_pass将response header变了。
解决,修改Nginx配置为:
upstream 5iops-w2c{
server 10.10.10.112:80 weight=5 max_fails=3 fail_timeout=5s;
server 10.10.10.79:80 backup;
}
server {
server_tokens off;
listen 80;
server_name w2c.5iops.com w2c.5iops.com;
access_log /home/logs/nginx/w2c.5iops.com-access.log main;
error_log /home/logs/nginx/w2c.5iops.com-error.log error;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
location / {
proxy_pass http://5iops-w2c;
}
}
问题解决。
总结:
希望以后有新建 vhost/*.conf 中有upsteam 时最好加个与域名不相干的字符串(如5iops-xxx )。 [[之前我也碰到这个问题之前让我困惑很久,还很不好查]]。
这样是proxy_pass就不会带上upsteam再加一级域名+ get。 (这里有正则,所不也最好不要加一些特殊符号。)这可能是Nginx的upstream与server_name命名冲突的bug。
相关热词搜索:Nginx upstream server_name
上一篇:基于开源Flash Server:Red5构建RTMP流媒体播放平台
下一篇:WebCDN流量及QOS异常故障RC查找与经验分享
评论排行
- ·Windows(Win7)下用Xming...(92)
- ·使用jmx client监控activemq(20)
- ·Hive查询OOM分析(14)
- ·复杂网络架构导致的诡异...(8)
- ·使用 OpenStack 实现云...(7)
- ·影响Java EE性能的十大问题(6)
- ·云计算平台管理的三大利...(6)
- ·Mysql数据库复制延时分析(5)
- ·OpenStack Nova开发与测...(4)
- ·LTPP一键安装包1.2 发布(4)
- ·Linux下系统或服务排障的...(4)
- ·PHP发布5.4.4 和 5.3.1...(4)
- ·RSYSLOG搭建集中日志管理服务(4)
- ·转换程序源码的编码格式[...(3)
- ·Linux 的木马程式 Wirenet 出现(3)
- ·Nginx 发布1.2.1稳定版...(3)
- ·zend framework文件读取漏洞分析(3)
- ·Percona Playback 0.3 development release(3)
- ·运维业务与CMDB集成关系一例(3)
- ·应该知道的Linux技巧(3)