nginx 错误处理程序始终显示 HTTP 200

nginx 错误处理程序始终显示 HTTP 200

我正在尝试在 PHP 中实现自定义 nginx 错误页面,但似乎我的错误处理程序总是显示 200,而不是实际生成的状态(例如,如果我输入无效链接,则显示 404)。这是我的 error_page 指令:

error_page 400 401 402 403 404 410 418 500 502 503 504 505 /scrnus.php;
location = /scrnus.php {
    root /var/www/error_pages;
    internal;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param HTTPS on;
    fastcgi_pass scrnus-php;
}

预期结果: 预期结果

实际结果: 实际结果

任何帮助,将不胜感激。

答案1

最终通过将状态作为 GET 变量传递给我的脚本来解决了该问题:

error_page 400 401 402 403 404 410 418 500 502 503 504 505 /scrnus.php?error=$status;

虽然这不是最好的方法,但是它可以起作用并且对用户是不可见的。

相关内容