Конфигурация моего сервера выглядит так: Nginx1 (proxycache) <---------> Nginx2 <-> PHP-FPM
Когда PHP-FPM выходит из строя из-за того, что процесс не работает (errorconnect to unix: /run/php/php7.0-fpm.sock failed: нет такого файла или каталога при подключении к восходящему потоку) или из-за того, что pm.max_children был достигнут Nginx2 возвращает 404. Я посмотрел, установлено ли это поведение где-нибудь в моей конфигурации, но похоже, что это значение по умолчанию.
Если Nginx1 получает код ошибки 502 от Nginx2, он покажет устаревшую версию страницы, и поэтому я хочу, чтобы он возвращал код 502. Я знаю, что могу настроить Nginx на использование устаревшей версии, когда он получает 404 из восходящего потока, но нет никакого способа отличить это от обычного 404, когда файл удаляется.
Обычно это происходит, если вы настраиваете php для отображения ошибок:
php_admin_value[display_errors] = On
nginx считает сообщение об ошибке действительной страницей и изменяет код состояния http.
Ссылка: https://stackoverflow.com/questions/11421240/why-does-display-errors-change-the-http-status-code