今天遇到了一个非常奇怪的问题……

2014-07-17 15:45:06 +08:00
 rrfeng
Nginx
有关的配置如下:
upstream my_appserver {
ip_hash;
1.1.1.1:8888;
1.1.1.2:8888;
1.1.1.3:8888;
1.1.1.4:8888;
}

proxy_next_upstream error timeout http_500 http_502

log_format upstream '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" ($gzip_ratio) $request_time '
'"$upstream_addr" "$upstream_status" "$upstream_response_time"';


------------------------------------------------
1.1.1.1 ~ 1.1.1.4 上的服务升级之后,某个 url 访问会出现 500 错误,然后按照配置,nginx 会尝试 upstream 里的另外的机器。下面是一条日志:

123.187.84.157 - - [17/Jul/2014:08:21:45 +0800] "GET /archive/index.action HTTP/1.1" 502 2365 "http://www.example.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" "-" (-) 0.006 "1.1.1.2:8888, my_appserver : 2.2.2.2:80" "500, 502 : 200" "0.006, 0.000 : 0.000"


在日志的 $upstream_addr 中出现了三个字段,分别是
1. upstream 第一次连接的后端服务器 1.1.1.2:8888
2. 奇怪的东西……
3. 502 错误的页面存储在另一台服务器上(2.2.2.2:80)

其中 2 那个 my_appserver 是 upstream 的名字啊,怎么会出现在这种地方????



我查了相同的时间段内其他 url 访问第一次后端返回 500 的日志,和相同 url 出问题之前的时候的访问日志,第一次 500 之后尝试第二个服务器会显示 ip:port 的……

后端的服务修复的 bug 之后,这个 my_appserver 就消失了。

如何解释??
2397 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/123143

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX