您可以配置 NGINX 将 HTTP 请求重定向到 SSH 连接吗?

您可以配置 NGINX 将 HTTP 请求重定向到 SSH 连接吗?

我有一个只能通过单个端口访问的服务器(我使用带端口转发的 VPN)。我已经使用 NGINX 为我托管的一些 HTTPS 服务器设置了反向代理。

我想知道是否可以做类似的事情,我可以指定一个位置,并将其重定向到带有 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.4是 SSH 服务器,而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;
    }
}

相关内容