Nginx 自定义404页面未显示

Nginx 自定义404页面未显示,nginx,Nginx,我刚开始使用Nginx,并进行了基本配置,关于配置PHP FPM,我将索引文件改为index.PHP,而不是index.html。我还设法获得了URL重写的句柄,尽管为了简单起见,我在下面的示例中省略了它 但是在默认配置文件中,有一个专门用于错误页面的部分,看起来它已经准备好即插即用。我已经取消了它们的注释,但它们不能正常工作。我已经讨论了一些关于Stackoverflow的404相关问题,每个人似乎都建议将其作为正确的语法 也许指令的顺序是错误的,但是,这是从原始的样本配置,所以我不知道为什么

我刚开始使用Nginx,并进行了基本配置,关于配置PHP FPM,我将索引文件改为index.PHP,而不是index.html。我还设法获得了URL重写的句柄,尽管为了简单起见,我在下面的示例中省略了它

但是在默认配置文件中,有一个专门用于错误页面的部分,看起来它已经准备好即插即用。我已经取消了它们的注释,但它们不能正常工作。我已经讨论了一些关于Stackoverflow的404相关问题,每个人似乎都建议将其作为正确的语法

也许指令的顺序是错误的,但是,这是从原始的样本配置,所以我不知道为什么它不会工作

我已经从配置文件中删除了所有注释行,剩下的是:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/html;
    index index.php;

    server_name localhost;

    location / {
        try_files $uri $uri/ index.php;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}
现在,当我去http://localhost/this-page-doesnt-exist,浏览器将显示未找到的文本文件,而不是my/404.html文件的内容

另外,我的404.html文件的权限与index.php的权限相同,后者是644。主人也一样


有什么不对劲吗

try\u files正在将您对不存在的文件的请求传递到index.php。这将依次向php fpm发送请求。默认情况下,Nginx将从php fpm返回的响应返回给您所看到的客户端

将php fpm配置更新为如下所示,并通知Nginx处理响应中的错误代码

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    fastcgi_intercept_errors on;
    include fastcgi_params;
}
文件如下: