使Nginx从PHP-FPM发送4xx/5xx错误

前端之家收集整理的这篇文章主要介绍了使Nginx从PHP-FPM发送4xx/5xx错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有Nginx设置来反向代理以.PHP结尾的所有文件.在某些脚本中,我检查参数并发送“406 Not Acceptable”作为一般错误,需要从jQuery / Ajax中获取.我可以更改错误,但我希望能够将其发送到客户端.如果我发送406,Nginx将其更改为502 Bad Gateway并注入它自己的错误消息.

它适用于404403,但这些错误在这种情况下并不真正“适用”;这是一个如此禁止的API并不是一个好的RESTful练习.

我尝试使用fastcgi_intercept_errors,但这似乎没有什么区别.

我正在使用Nginx 0.7.

PHP的一部分:

header($_SERVER['SERVER_PROTOCOL'] . '406 Not Acceptable');
echo '{"error":"Missing Params"}';
exit;

Nginx配置

    location ~ .PHP${
            fastcgi_intercept_errors on;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.PHP;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }
最佳答案
协议后你缺少一个空格.

header($_SERVER['SERVER_PROTOCOL'] . ' 406 Not Acceptable'); //This works
header($_SERVER['SERVER_PROTOCOL'] . '406 Not Acceptable'); //This doesn't work.

我得到的结果和你看到的一样.由于缺少空间,Nginx拦截了响应并给出了502错误页面.当空间在那里时它通过406.

猜你在找的Nginx相关文章