Ngx 反向代理 504 错误解决技术
“反向代理设置的一个大坑,困扰了我很久,时不时的出现 504 错误,现在终于解决了” 朋友对我如是说。现在分享给大家,这位朋友因为这个问题困扰了很久,希望给大家带来帮助,少走弯路。关注我们,给我们投稿,一起成长,帮助他人。
nginx reverse proxy 的问题,在某些情况下会出现 504 错误,重启机器后就好了,过了一会儿又出现,最后确定问题和文档长度有关,慢慢的找出了元凶。期间经历了太多的曲折过程,包括每个环节的检查,还一度怀疑是数据库不稳定或者是服务器不稳定亦或是系统的 ulimit 限制等,无数次的配置修改,reload,重启等等,都没有完全确定问题所在。后面还做了很多次的 proxy buffer 和 fastcgi buffer 配置的频繁修改,最终没有解决。最后,在看访问日志的时候特别的注意到了访问的协议是 1.0,http 1.0 啊,大家说说是不是个大坑,现在的代理默认哪有用过时的协议的啊。并且在 nginx 官方文档描述 upstream 的地方并没有对协议有一丝的提及,你说一个人学习一件东西,不可能把它翻个底朝天,时间上也是不允许的啊。
很多时候,出现问题很难找出还在于网络环境的不稳定,一个不稳定的环境测试就非常困难。
参考官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html
记住两个配置,共勉。
upstream http_backend { server 127.0.0.1:8080; ntlm; } server { ... location /http/ { proxy_pass http://http_backend; proxy_http_version 1.1; proxy_set_header Connection ""; ... }
fastcgi_keep_conn on;
暂无