让 nginx 等待 x 秒后再返回 502

让 nginx 等待 x 秒后再返回 502

我认为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 秒更改为您需要的任何时间,然后重新启动两者并再次测试时间。

相关内容