Nginx error_page 未提供 php 文件

Nginx error_page 未提供 php 文件

我正在尝试设置一个 404 文件,该文件使用指令处理未知的 url 请求error_page,我尝试将其根植于一个 .php 文件,该文件与路由位于同一目录中。

我无法弄清楚的问题是,一旦我创建 404 路由并定义位置,它似乎就会下载文件而不是提供它。为了测试我没有发疯,我在 404 规则之外放置了额外的 php 文件,它们运行并返回内容,但 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但打开和关闭都不会改变帮助,还注意到如果我输入一个虚假的网址 www.site.com/somecraphere,它会转到一个无法访问的网站 ERR_INVALID_RESPONSE 所以我认为 404 规则正在起作用,它只是无法对文件做任何事情。

欢迎提出任何建议、改进和更正

答案1

事实证明我不是一个聪明人

不含试用文件location ~ \.php$

        try_files $uri /404.php;

它不会执行 php,而是尝试以提供图像或文档的相同方式为其提供服务。

相关内容