原生 nginx 反代后端的时候能不能把 http status_code 转为一个 header,一律返回 200?

2019-09-26 21:18:15 +08:00
 cy97cool

需求:nginx 的下游会检查 http 状态码,不是 200 就不返回,这一层我无法控制

所以需要在 nginx 这一层把状态码都改为 200,同时把真正的 status code 放入到一个自定义 header 里


目前已经能实现把特定的 header 重命名 比如 Access-Control-Allow-Headers

        proxy_hide_header Access-Control-Allow-Headers;
        add_header Access-Control-Allow-Headers "*" always;
        add_header real_acah "$upstream_http_access_control_allow_headers" always;

注意到 add_header 用到的 always 否则在 404 等页面就不能添加

3044 次点击
所在节点    NGINX
2 条回复
autogen
2019-09-26 21:52:11 +08:00
location /dealwith_503{
set $ret_body '{"code": "V00006","msg": "操作太频繁了,请坐下来喝杯茶。"}';
if ( $arg_callback != "" )
{
return 200 'try{$arg_callback($ret_body)}catch(e){}';
}
return 200 $ret_body;
}
————————————————
版权声明:本文为 CSDN 博主「 streamcc 」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接: https://blog.csdn.net/streamcc/article/details/50587861
cy97cool
2019-09-26 22:02:44 +08:00
@autogen 你这样是用 error_page 和 return 200 "content" 弄丢了返回的内容,我不需要改写内容,原样返回即可

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604558

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX