最小的例子
機器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