我定义了一堆 upstream
upstream {
server 127.0.0.1:1050;
server 127.0.0.1:1051;
server 127.0.0.1:1052;
server 127.0.0.1:1053;
}
在我的代码里面我对错误的处理是这个样子的
现在遇到了问题
只要我拼命导致这种 500 的请求
然会就会出现 502!
难道 nginx 判断上游是不是 fail,也使用了 500
我改成了 400 就不会 502 了
所以问题来的, upstream 判断上游 fail 到底有哪些条件?
1
msg7086 2020-01-14 21:04:29 +08:00 via Android 1
5 系是服务器崩溃或者出问题。4 系是客户端有病。没记错的话是这个规范,你可以去查查状态码分类含义。
|
2
also24 2020-01-14 21:17:41 +08:00 1
你是否配置了 proxy_next_upstream 参数?
我翻看了一下官方文档 http://nginx.org/en/docs/http/ngx_http_upstream_module.html#max_fails 上面写的是: What is considered an unsuccessful attempt is defined by the proxy_next_upstream...... 再翻看 proxy_next_upstream 的说明 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_next_upstream 默认参数只有 error 和 timeout,没有包含 http_50x |
5
Livid MOD 如果是用户输入了不合法的数据,后端程序本身没有因此崩溃的话,那么应该返回的状态码是 400 Bad Request。
|
6
also24 2020-01-14 21:45:24 +08:00 1
@chenqh #3
才反映过来你说的 bt 是宝塔啊,我找了个宝塔的服翻了下配置,确实是宝塔加了这一句 它的 nginx 配置文件在: /www/server/nginx/conf/nginx.conf 里面引用了: /www/server/nginx/conf/proxy.conf 在这个文件里,配置了: proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; |
10
wangyzj 2020-01-14 22:07:15 +08:00
全 200
然后用自定义 code 来区分是我的习惯啊 |