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

前端之家收集整理的这篇文章主要介绍了在nginx中,如何返回http 500返回码并包含响应客户端的响应体前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

@H_301_11@    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或使用重写来完成.如果有人知道怎么做,请你举个详细的例子.

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

@H_301_11@error_page 404 = /404.html;

location /404.html {
    return 500 "

猜你在找的Nginx相关文章