一个请求被重复提交,原因是nginx代理后面挂着2个服务器,请求超时的时候(其实已经处理了),结果nigix发现超时,有把请求转给另外台服务器又做了次处理。
配置:
proxy_next_upstream:off
后问题解决,不过也会代理另外问题,比如发布的时候部分请求会出错等。
参考:http://www.tech126.com/nginx-healthcheck/
proxy_next_upstream
语法: proxy_next_upstream [error|timeout|invalid_header|http_500|http_503|http_404|off]
默认值: proxy_next_upstream error timeout
上下文: http, server, location
Directive determines, in what cases the request will be transmitted to the next server:
- error ― an error has occurred while connecting to the server, sending a request to it, or reading its response;
- timeout ― occurred timeout during the connection with the server, transfer the requst or while reading response from the server;
- invalid_header ― server returned a empty or incorrect answer;
- http_500 ― server returned answer with code 500
- http_503 ― server returned answer with code 503
- http_404 ― server returned answer with code 404
- off ― it forbids the request transfer to the next server
Transferring the request to the next server is only possible when nothing has been transferred to the client -- that is, if an error or timeout arises in the middle of the transfer of the request, then it is not possible to retry the current request on a different server.