在处理简单的NGINX+PHP-FPM堆栈时,基本上有3组超时。
一个是PHP引擎,您已经将其调整为无限制。
第二个是PHP-FPM,它通过request_terminate_timeout
在池设置中。默认值通常如下所示:
;request_terminate_timeout = 0
的值
0
这意味着PHP-FPM本身没有设置任何限制,因此您可能不必对此进行调整。
最后,还有用于FastCGI通信的NGINX超时,它通过NGINX配置中的两个指令进行控制。你最关心的fastcgi_read_timeout
:
如果FastCGI服务器在此时间内没有传输任何内容,则连接将关闭。
您可以将其放置在PHP处理程序位置,例如:
location ~ \\.php$ {
...
fastcgi_connect_timeout 600s;
fastcgi_pass ...;
注意不要混淆“坏网关”(502)和“网关超时”(504)错误。这些是不同的错误:前者是指与PHP-FPM通信失败(通常是严重错误配置、失效/未运行PHP-FPM进程的迹象),而后者在与PHP-FPM通信时超过超时时间。