#php #nginx
#php #nginx
Вопрос:
я начну с того, что моя настройка работает нормально для всех запросов, которые предназначены для отправки <400 кодов состояния.
В моей среде разработки я хочу отправить клиенту фактическую ошибку 500, включая ошибку. nginx не передает это, но регистрирует ошибку и отображает встроенную страницу 502.
я попытался установить fastcgi_intercept_errors off;
, хотя это значение по умолчанию, но это тоже не сработало.
Рассматриваемый nginx — 1.15.3 из официального контейнера docker.
конфигурация
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /dev/stdout;
access_log /dev/stdout;
root /var/www/html/app/public;
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript application/javascript text/xml application/xml application/xml rss text/javascript;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ .php$ {
fastcgi_split_path_info ^(. .php)(/. )$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_read_timeout 1000;
fastcgi_intercept_errors off;
}
}
я был бы рад любым предложениям.
с наилучшими пожеланиями
Обновить
Оказывается, что простое исключение не отвечает 500 при включении display_errors (что является случаем разработчика).
Я исправил это с помощью промежуточного программного обеспечения.
Комментарии:
1. Что генерирует ошибку 500? Это
index.php
скрипт? Я только что протестировалhttp_response_code(500);
, и он без проблем передается клиенту.2. я добавил исключение для контроллера, чтобы проверить эту проблему.
3. Вероятно, есть еще конфигурационные файлы, которые вы не показали, например, основной
nginx.conf
, как они выглядят? Такжеconf.d/default.conf
обычно включает что-то вродеerror_page 500 502 503 504 /50x.html;
, это в игре?4. @RichardSmith ваш комментарий позволил мне проверить, действительно ли я генерирую 500 с исключением, что приводит к моему ответу (см. Обновление). так что спасибо!