nginx 反代容器地址失效时不影响其他服务

发布于 2023-04-22  1 次阅读


由于我会用 watchtower 自动更新一些容器,有时候容器半夜更新后,由于各种因素可能导致启动失败一直在后台重启:

而且我在 nginx 的反代里面又是直接用容器地址而非 ip 来反代的,这样一组合就可能导致只要 nginx 配置文件里面的某一个容器挂了,整个 nginx 在重载后都会挂掉。

所以这里改变一下配置,启动或重载配置时让 nginx 不检测 host,修改很简单,打开 nginx 配置文件,添加如下配置:

server {
    listen 80;
    server_name example.com;

    resolver 127.0.0.11 valid=30s; # 反代中添加的配置

    location / {
        set $target http://headscale-webui:5000; # 反代中添加的配置
        proxy_pass $target; # 反代中添加的配置
    }
}

resolver 指定 host 解析服务器,127.0.0.11 是 docker 的默认 DNS 服务,set 变量是把反代的 host 传给变量,然后在反代地址中用变量代替。

这样即使一个容器挂掉,也不会影响 nginx 的重启或重载啦~