我认为fastcgi_read_timeout
这就是我所需要的,但希望得到专家对我的用例的确认!谢谢。
--
我让 nginx 对 php-fpm 实例进行 fastcgi 中继。
fpm 实例有时需要重新启动。这可能需要 1 到 2 秒的时间。如果在此期间有请求进入,nginx 将向用户提供 502 错误。
理想情况下,我们将拥有一个 fpm 进程集群用于滚动重启,但这超出了目前的范围。
我的目标是让 NGINX 等待,如果 cgi-relay 不可用,则最多等待 X 秒/毫秒,然后向用户返回 502。
以下是我正在做的工作的总体思路:
location ~ ^/path/to(/|$) {
include includes/php.conf;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_param SERVER_NAME $host;
fastcgi_param REQUEST_SCHEME $http_x_forwarded_proto;
# Assume some timeout param can be added here??
fastcgi_pass php-fpm:9000;
}
答案1
如果我没记错的话,我认为当您的 php 网关未启动时会返回 502 网关超时。因此,最好在 php 中控制超时。
在您的php.ini
文件中查找以下行:
; Default timeout for socket based streams (seconds)
; http://php.net/default-socket-timeout
default_socket_timeout = 60
将 60 秒更改为您需要的任何时间,然后重新启动两者并再次测试时间。