LMLPHP后院

Ngx 反向代理 504 错误解决技术

maybe yes 发表于 2020-03-07 21:02

“反向代理设置的一个大坑,困扰了我很久,时不时的出现 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;

关于 Nginx 代理详细配置,请看另一片文章《Nginx SSL 代理设置完整示例》。

2020-04-02 20:05:20 1585829120 0.014866