думаю fastcgi_read_timeout
это то, что мне нужно здесь, но я хотел бы получить экспертное подтверждение моего варианта использования! Спасибо.
-
У меня nginx выполняет ретрансляцию fastcgi для экземпляра php-fpm.
Экземпляр fpm время от времени необходимо перезапускать. Это может занять от 1 до 2 секунд. Если в это время поступит запрос, nginx выдаст пользователю ошибку 502.
В идеале у нас будет кластер процессов fpm для последовательного перезапуска, но в настоящее время это выходит за рамки возможностей.
Моя цель - заставить NGINX ждать до X с / мс перед тем, как вернуть 502 пользователю, если cgi-relay недоступен.
Вот общее представление о том, с чем я работаю:
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;
}
Если я не ошибаюсь, я считаю, что тайм-аут 502 Gateway возвращается, когда ваш php-шлюз не работает. По этой причине время ожидания идеально контролируется в php.
В твоем php.ini
в файле найдите следующую строку:
; Default timeout for socket based streams (seconds)
; http://php.net/default-socket-timeout
default_socket_timeout = 60
Измените 60 секунд на все, что вам нужно, затем перезапустите оба и снова проверьте время ожидания.