我有一个使用 NGINX 和 PHP-FPM 的基于 PHP 的错误页面配置。但是,例如,当我请求example.com/nothing(不存在的页面)时,PHP-FPM 返回 200 状态代码,而不是 NGINX 返回的正确 404 状态代码。其他错误也会发生这种情况(例如:example.com/assets当 NGINX 的状态为 403 时,PHP-FPM 返回 200)。本质上,我希望 PHP-FPM 做的是镜像 NGINX 显示的状态代码(用 NGINX 显示的状态代码覆盖 200 状态代码),因此我的错误页面显示正确的信息。我知道您可以通过在使用时指定状态代码来更改状态代码http_response_code();,但我宁愿让服务器执行此操作,而不让我硬编码正确的状态代码。
错误页面:<? echo http_response_code(); ?>
NGINX 错误页面配置:
set $errorDocs "/var/www/GLOBAL_RESOURCES/error";
recursive_error_pages on;
location ^~ $errorDocs {
internal;
alias $errorDocs;
}
#Resolve error asset location 404s
location /errorAssets {
root $errorDocs;
}
error_page 404 /404.php;
location = /404.php {
root $errorDocs;
include /etc/nginx/xenon-conf/headers/fpm-params.conf;
}
Run Code Online (Sandbox Code Playgroud)
PHP-FPM 设置:
include …Run Code Online (Sandbox Code Playgroud)