NGINX proxy_pass 主机解析与IP6不一致

NGINX proxy_pass 主机解析与IP6不一致

我在一个简单的反向代理场景中使用 NGINX,通常使用变量来定义主机名,以便在主机不可用时它也不会无法启动。

我发现:通过这种配置,流量被代理,但页面无法完全呈现 - 看起来好像某些 .js 库没有加载。

    resolver 192.168.86.1 valid=30s ipv6=off;
    location /cam/ {
               set $motion01 motion01;
               proxy_set_header Host $host;
               proxy_pass http://$motion01.lan/;

如果我像这样删除 ipv6=off,那么我会得到 502 错误网关,并且错误显示“主机未解析”:

    resolver 192.168.86.1 valid=30s;
    location /cam/ {
               set $motion01 motion01;
               proxy_set_header Host $host;
               proxy_pass http://$motion01.lan/;

但是,如果我改为使用文字主机名而不是变量,它就可以完美地运行:

               set $motion01 motion01;
               proxy_set_header Host $host;
               #proxy_pass http://$motion01.lan/;
               proxy_pass http://motion01.lan/;

我不想使用文字主机名,因为如果主机在启动时不可用,nginx 将无法启动,但我无法弄清楚这个配置是怎么回事。

我尝试在服务器上启用和禁用 IP6,并包括和排除

listen [::]:443 ssl; 

指令,但都无济于事。这不是 nginx 早期版本的问题(不记得我最初使用的是哪个版本),但现在是 1.14.2.2 的问题。

欢迎任何建议!

相关内容