带有php的Nginx自定义error_page

问题描述 投票:0回答:1

我是nginx的新手,为了对其进行测试,我从Apache迁移而来,剩下的就是设置自定义错误页面。

这些页面是php文件(出于多语言目的,我已经尝试了StackOverflow的许多方法,但我不知道该怎么做。

其中一些是:

到目前为止,我已经创建了一个文件/etc/nginx/common/default-error-pages.conf以将其包括在虚拟主机中。该文件包含:

error_page 400 /error/400.php;
error_page 401 /error/401.php;
error_page 403 /error/403.php;
error_page 404 /error/404.php;

error_page 500 /error/500.php;
error_page 503 /error/503.php;

location /error/ {
    alias /var/www/error/;
    autoindex on;
}

location ~ \.php$ {
    root /var/www/error/;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;

    # fastcgi_intercept_errors on;
}

如果启用自动索引,则php文件位于/var/www/error中,我可以从浏览器中查看所有文件,但是如果单击其中的任何文件,则会显示默认的404页面。

我已经创建了其中一个文件到测试站点的符号链接,即使按预期的css加载,它也会正确执行。

我尝试嵌套位置并将此配置文件包含在站点server块的顶部。

如果我将php错误文件的扩展名更改为html,则可以正确使用它们。

nginx站点与此类似(文件简化):

server {
        listen 4430 ssl http2 default_server;
        listen [::]:4430 ssl http2 default_server;
        server_name test.local;

        root /var/www/html;
        index index.php index.html;
        # execute php files "helper"
        include common/php-files.conf;
        fastcgi_hide_header X-Powered-By;
        include common/default-error-pages.conf;

        location / {
                # autoindex on;
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
}

应该如何配置?我已对其进行了很多次更改,以至于我不知道还能尝试什么。

Nginx日志文件未显示任何意外的错误/配置。

提前感谢

php nginx ubuntu-server
1个回答
0
投票

我在帖子下方评论中告诉root,我错了Richard Smith。>

将其更改为建议的名称后,它们都正常运行了。

我还嵌套了location块,因此可以正确处理php文件,因为其他文件正在使用fastcgi_intercept_errors on;处理以捕获http错误。

所以配置保持为:

error_page 403 /error/403.php;
error_page 404 /error/404.php;

error_page 500 /error/500.php;
error_page 503 /error/503.php;

location /error/ {
    root /var/www/;
    try_files $uri $uri/ =404;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        fastcgi_intercept_errors off;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.