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トラフィックを認識してWebサーバーにリダイレクトできることを意味します。

この場合、10.10.10.4SSHサーバーで、10.10.10.5バックエンドはWebサーバー(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;
    }
}

関連情報