最小的例子

最小的例子

最小的例子

機器A和B,其中B使用有網域的mDNS b.local,並在2222埠設定ssh服務。

在機器 A 中nginx.conf

stream {
    upstream b-ssh {
        server  b.local:2222;
    }
    server {
        listen      2222;
        listen      [::]:2222;
        proxy_pass  b-ssh;
    }
}

nginx -t機器A上測試此配置時,出現錯誤:

[emerg] host not found in upstream "b.local:2222"

然而,在機器A中,使用ssh -p 2222 b.local工作正常(-4或也-6經過測試)

可能有用的信息

在我的實際範例中,機器 A 是 Windows 11,它禁用了所有防火牆;機器 B 是機器 A 內的 WSL2 ubuntu 21.10,它使用 avahi-daemon mDNS 服務。

在A端機器上nginx.conf,我還設定了一個HTTP代理通行證:

http {
    server {
        listen  8929;
        listen  [::]:8929;
        location / {
            proxy_pass  http://b.local:8929;
        }
    }
}

即使使用 mDNS 域名,效果也很好

如果我將 mDNS 網域替換為上游伺服器中的真實 IP,則 SSH 代理可以工作。

答案1

安裝libnss-mdns並確保 mdns 條目位於/etc/nsswitch.conf

hosts:          files mdns [NOTFOUND=return] dns

您可以使用以下命令測試 mdns 解析度getent

getent hosts b

相關內容