防止 nginx 反向代理在未找到上游时“忽略”崩溃

防止 nginx 反向代理在未找到上游时“忽略”崩溃

在我们的应用程序中,我们严重依赖docker,并使用模块化方法保持整个应用程序的可管理和可维护性。基本上任何调用都会通过nginx服务,该服务将调用重定向(反向代理)到正确的后端。

位置如下:

    location /api/entry {
            proxy_pass http://entry:1337;
    }
    location /api/rover {
            proxy_pass http://rover:1337;
    }

entryrover(nodejs) 后端 docker 的名称。这种方法对我们的应用程序很重要,因为我们希望即使某个模块(探测车/入口)长时间停止工作,一切仍能正常运转

问题是,当其中一个模块不可用时,nginx 似乎不希望启动。(docker 未启动)。这意味着如果某个模块被禁用一段时间,并且 nginx 重新启动(由于某些随机原因或某种更新),整个系统将无法正常工作。

我尝试通过在以下位置添加解析器来修复此问题:

    location /api/entry {
            resolver 127.0.0.1 valid=30s;
            proxy_pass http://entry:1337;
    }

然而即使这样,服务器也会在 30 秒后崩溃。

我看到的另一个建议是手动输入 IP 地址:但这与我们想要做的相去甚远。我们实际上使用 docker bridges因为那么我们就不必关心实际的 IP 地址,它对外界来说是“隐藏”的。

相关内容