这个要求挺古怪的,背景是防火墙只开了 nginx 443 端口。我也想同时 ssh 登录进去,但是F5没开IP

就只能这么干了,让 Nginx 一个端口跑多个服务

在 nginx.conf 加一段,stream 配置,nginx 的 ip 是 192.168.8.110:


#Multi Ports
stream {
    upstream ssh {
        server 192.168.8.112:22;
    }

    upstream https {
        server 192.168.8.111:443;
    }

    map $ssl_preread_protocol $upstream {
        default ssh;
        "TLSv1.2" https;
        "TLSv1.3" https;
        "TLSv1.1" https;
        "TLSv1.0" https;
    }

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

        proxy_pass $upstream;
        ssl_preread on;
    }
}

测试一下:

curl -v https://192.168.8.110

ssh 192.168.8.110 -p 443

这样就可以了。