Nginx error_page не обслуживает php файлы
Я пытаюсь настроить файл 404, который обрабатывает неизвестные URL-запросы, используя error_page
директива, файл, к которому я пытаюсь получить root, является.php файлом, который находится в том же каталоге, что и маршрут.
Проблема, которую я не могу понять, состоит в том, что, как только я создаю маршрут 404 и определяю местоположение, кажется, что он загружает файл, а не обслуживает его. Чтобы проверить, что я не сошел с ума, я поместил дополнительные php-файлы вне правила 404, и они запускаются и возвращают контент, но файл правила 404 просто скачивает
фрагмент моего конфига
root /var/www/itn;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 1d;
}
error_page 404 /404.php;
location = /404.php{
root /var/www/itn;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/error/html;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include fastcgi_params;
}
быстрые поисковые решения предложили fastcgi_intercept_errors
но включение и выключение не меняет справку, также заметил, что если я вставил фиктивный URL-адрес, www.site.com/somecraphere, он идет на сайт не может быть достигнуто ERR_INVALID_RESPONSE, так что я думаю, что правило 404 работает, он просто ничего не может сделать с файлом.
Все предложения, улучшения и исправления приветствуются
1 ответ
Оказывается, я не умный человек
без пробных файлов, включенных в location ~ \.php$
try_files $uri /404.php;
он не будет выполнять php, вместо этого он будет пытаться обслуживать его так же, как обслуживал изображение или документ.