HTTP 요청을 SSH 연결로 리디렉션하도록 NGINX를 구성할 수 있습니까?

HTTP 요청을 SSH 연결로 리디렉션하도록 NGINX를 구성할 수 있습니까?

단일 포트를 통해서만 액세스할 수 있는 서버가 있습니다(포트 전달 기능이 있는 VPN을 사용합니다). 제가 호스팅하는 일부 HTTPS 서버에 대해 NGINX를 사용하여 역방향 프록시를 설정했습니다.

위치를 지정하고 SSH 포트 22를 사용하여 LAN IP로 리디렉션할 수 있는 비슷한 작업을 수행할 수 있는지 궁금합니다.

location /ssh/ {
  proxy_pass      192.168.1.44:22;
}

나는 Proxy_pass가 HTTP에서만 작동한다는 것을 알고 있지만 ssh에 대한 것이 있는지 궁금합니다.

답변1

이것은 매우 좋은 질문입니다. 예, nginx를 사용하여 SSH 트래픽을 리디렉션할 수 있습니다. 다음 예에서 nginx는 프로토콜을 기반으로 트래픽을 리디렉션합니다. 이는 nginx가 SSH 트래픽을 인식하여 SSH 서버로 리디렉션할 수 있고, HTTPS 트래픽을 인식하여 웹 서버로 리디렉션할 수도 있음을 의미합니다.

이 경우 10.10.10.4SSH 서버이고 10.10.10.5백엔드는 웹 서버(nginx 프록시 뒤)입니다.

stream {
    upstream ssh {
        server 10.10.10.4:22;
    }

    upstream web {
        server 10.10.10.5:443;
    }

    map $ssl_preread_protocol $upstream {
        default ssh;
        "TLSv1.2" web;
    }

    # SSH and SSL on the same port
    server {
        listen 443;

        proxy_pass $upstream;
        ssl_preread on;
    }
}

관련 정보