최소한의 예

최소한의 예

최소한의 예

머신 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.confHTTP 프록시 패스도 설정했습니다.

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

관련 정보