小编Spo*_*ule的帖子

无论 NGINX 状态代码如何,PHP-FPM 始终返回 200

我有一个使用 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)

php nginx http-status

4
推荐指数
1
解决办法
5615
查看次数

标签 统计

http-status ×1

nginx ×1

php ×1