如何解决nginx 504 Gateway Time-out错误

如何解决nginx 504 Gateway Time-out错误
最新回答
匆匆过客

2021-05-22 00:47:46

Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由於某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止。

    Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。

    解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。

    而正确的设置需要考虑服务器自身的性能和访客的数量等多重因素。
将nginx.conf设置为:

    fastcgi_connect_timeout 300s;
    fastcgi_send_timeout 300s;
    fastcgi_read_timeout 300s;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 8 128k;#8 128
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_intercept_errors on;
这裏最主要的设置是前三条,即
    fastcgi_connect_timeout 300s;
    fastcgi_send_timeout 300s;
    fastcgi_read_timeout 300s;

    这裏规定了PHP-CGI的连接、发送和读取的时间,300秒足够用了,因此我的服务器很少出现504 Gateway Time-out这个错误。最关键的是php-fpm.conf的设置,这个会直接导致502 Bad Gateway和504 Gateway Time-out。