您的位置:首页 > 运维架构 > Nginx

nginx 502

2015-11-18 19:24 696 查看
今天在后台管理系统,执行一个读取文件然后进行处理的功能时,由于没有做成异步处理,导致出现time out。而改功能执行了两次,数据库中出现了double倍的记录。

由于时两台server,通过nginx来进行负载均衡。所以,查看服务器日志,发现每一次请求执行两次,是因为对每一个服务器都发送了一次请求。

后来换了测试服务器,没用nginx,执行成功。又用server1的ip+端口直接进行访问,也执行成功。

所以,初步判断是nginx将超时的请求发送给了另一台server

参照 http://www.linuxyan.com/web-server/67.html
nginx有一个功能,就是当后端的服务器返回给nginx502、504、404、执行超时等错误状态的时候,

nginx会自动再把这个请求转发到upstream里面别的服务器上面,从而给网站用户提供更稳定的服务。

配置如下:
location /
{
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
proxy_pass http://php_server_pool; proxy_set_header Host www.yourdomain.com;
proxy_set_header X-Forwarded-For $remote_addr;
}
这样的话,也算是保障了后端服务器的一个高可用性,不得不说,nginx还是很强大的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: