我有一个只能通过单个端口访问的服务器(我使用带端口转发的 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;
}
}