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

在nginx中,如何返回http 500返回码并包含响应客户端的响应体

发布时间:2020-12-13 21:39:01 所属栏目:Nginx 来源:网络整理
导读:我们有一个客户要求将http 500响应代码返回给他们的客户端,以获取对未找到的内容的请求,并从应用服务器传递响应正文.他们的应用程序不接受404返回代码.我们有一种hack尝试通过nginx返回此代码,并且还有其他有效500响应的情况尝试下一个上游服务器.对于我们客

我们有一个客户要求将http 500响应代码返回给他们的客户端,以获取对未找到的内容的请求,并从应用服务器传递响应正文.他们的应用程序不接受404返回代码.我们有一种hack尝试通过nginx返回此代码,并且还有其他有效500响应的情况尝试下一个上游服务器.对于我们客户想要的特殊情况,我们从上游服务器返回501,然后使用proxy_intercept_errors和error_page指令,如下所示:

服务器{
????????听28080;
????????#In comeing
????????server_name INTO;

    location / {
        proxy_pass http://some_servers;
        proxy_redirect          off;
        proxy_next_upstream     error timeout invalid_header http_500 http_404;
        proxy_connect_timeout   2;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_intercept_errors  on;
    }


    # redirect server error pages to the static page /50x.html
    #
    error_page   501 =500  /50x.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

当我们这样做时,我们得到他们需要的响应代码(500),但是我们失去了响应体.有没有办法做到这一点,即发回一个虚假的返回代码,nginx转换为500,从服务器传递的响应主体包含在客户端的响应中.我对nginx相当新,并且一直在研究和尝试几天没有运气.我想也许这可以通过proxy_set_header或使用重写来完成.如果有人知道怎么做,请你举个详细的例子.

最佳答案
你能把你的回应主体作为字符串返回吗?

error_page 404 = /404.html;

location /404.html {
    return 500 "

(编辑:李大同)

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

    推荐文章
      热点阅读