1

我有一个 PHP-FPM 配置为 nginx 1.1.15 的后端。我需要为来自 PPH-FPM 的错误自定义 40x、50x 错误页面。

例如,我从 php 脚本发送 403 标头并希望 nginx 显示自定义页面。nginx配置如下:

    error_page  403 /403.html;
    location = /403.html {
        root   html;
        allow  all;
    }

但是当我从 php 发送 403 标头时,nginx 显示它是本机的“403 Forbidden”页面,而不是我的自定义页面。

更新:对不起。我没有给出nginx的完整配置。我在 nginx 中处理 404 并将所有查询传递给单个脚本。此脚本发送 403 标头。所以 nginx 不显示自定义 403 页面。当我请求现有脚本时,绕过 nginx conf 中的 404 规则,然后返回自定义错误页面。这是我的 nginx.conf 的一部分

    error_page 404 = @myhandler;

    location @myhandler {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME script.php;
        include fastcgi_params;
    }

    error_page  403 /403.html;
    location = /403.html {
        root   html;
        allow  all;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
        include        fastcgi_params;
    }

UPD:我找到了解决方案。

**recursive_error_pages on;**
error_page 404 = @myhandler;

location @myhandler {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME script.php;
    include fastcgi_params;
    **error_page  403 /403.html;**
}
4

0 回答 0