加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

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

发布时间:2020-12-13 21:10:20 所属栏目:Nginx 来源:网络整理
导读:我有Nginx设置来反向代理以.php结尾的所有文件.在某些脚本中,我检查参数并发送“406 Not Acceptable”作为一般错误,需要从jQuery / Ajax中获取.我可以更改错误,但我希望能够将其发送到客户端.如果我发送406,Nginx将其更改为502 Bad Gateway并注入它自己的错

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

它适用于404和403,但这些错误在这种情况下并不真正“适用”;这是一个如此禁止的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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读