子请求中请求上游服务失败502页面自定义

大佬们好!


我最近遇到upstream上游服务宕掉,但是nginx回复一个502错误页面的问题。当我查看代码后发现该页面是在代码中写死的,并且查看了代码的逻辑也不知道该如何使得nginx不返回该页面:



502 Bad Gateway

502 Bad Gateway



openresty/1.15.8.2




因为我是在模块开发的过程中使用 ngx_http_subrequest 生成了子请求,并在子请求中location中使用proxy_pass请求上游服务,因此当上游服务如果有问题的时候,我希望能在主请求中做出response,而不是由nginx代回复。


因此我想知道,如果上游服务失败或者上游服务宕掉的情况下,可不可以让nginx不返回这个502页面,或者发回的body我可以过滤掉不让其返回给客户端?

邀请回答
提问于 2020-08-25 09:54
314 次浏览
共1个回答

发表评论
  • 陶辉
    2020-08-26 16:07

    是关于C模块开发的吗? 如果是的话,不列出代码是很难了解清楚问题的🙂

    1
    回复
    举报
    • 小禾先生 2020-08-26 17:09
      是在C模块开发,但是该返回不是由于我开发的模块导致的。我开发的模块中发起了子请求,然后由子请求向上游服务请求数据,上游服务是宕掉的。所以子请求就返回了502的错误页面,这个现象直接在nginx配置中就可以复现的: conf配置如下: ```nginx upstream killedups { server 127.0.0.1:8999; #宕掉的上游服务 } server { listen 8998; location /test { proxy_pass http://killedups/; } } ``` 然后使用curl请求: ```shell [root@v128 ~]# curl localhost:8998/test 502 Bad Gateway

      502 Bad Gateway


      openresty/1.15.8.2
      ``` 我明白直接使用error_page可以修改502错误回复的页面,但是我是在进行C模块开发,并且是在子请求中请求的上游服务。因此我是希望子请求失败的情况下主请求来回复,因此我想知道有没有什么办法可以让nginx在请求上游服务失败的情况下返回空的response。
      0
      回复
      举报
    • 陶辉 2020-08-26 18:34
      proxy_intercept_errors on;配置了吗?
      0
      回复
      举报
提问者

小禾先生

nginx初学者

  • 0

    文章

  • 0

    粉丝

  • 0

    被赞

小禾先生
按Enter键发送
您已邀请位用户
Copyright 公安部网络安全保卫局 All Rights Reserved
京公网安备 11010502047880号    京ICP备05070602号