최소한의 예
머신 A와 B. 여기서 B는 도메인 이름과 함께 mDNS를 사용 b.local
하고 포트 2222에서 SSH 서비스를 설정합니다. A와 B는 방화벽을 설정하지 않습니다.
기계 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는 avahi-daemon mDNS 서비스를 사용하는 머신 A 내부의 WSL2 ubuntu 21.10입니다.
측면 머신 A에서는 nginx.conf
HTTP 프록시 패스도 설정했습니다.
http {
server {
listen 8929;
listen [::]:8929;
location / {
proxy_pass http://b.local:8929;
}
}
}
mDNS 도메인 이름을 사용하더라도 잘 작동합니다..
업스트림 서버에서 mDNS 도메인 이름을 실제 IP로 바꾸면 SSH 프록시가 작동합니다.
답변1
다음 위치에 mdns 항목을 설치 libnss-mdns
하고 있는지 확인하세요 /etc/nsswitch.conf
.
hosts: files mdns [NOTFOUND=return] dns
다음을 사용하여 mdns 해상도를 테스트할 수 있습니다 getent
.
getent hosts b