这个要求挺古怪的,背景是防火墙只开了 nginx 443 端口。我也想同时 ssh 登录进去,但是F5没开IP
就只能这么干了,让 Nginx 一个端口跑多个服务
在 nginx.conf 加一段,stream 配置,nginx 的 ip 是 192.168.8.110:
1
2#Multi Ports
3stream {
4 upstream ssh {
5 server 192.168.8.112:22;
6 }
7
8 upstream https {
9 server 192.168.8.111:443;
10 }
11
12 map $ssl_preread_protocol $upstream {
13 default ssh;
14 "TLSv1.2" https;
15 "TLSv1.3" https;
16 "TLSv1.1" https;
17 "TLSv1.0" https;
18 }
19
20 # SSH and SSL on the same port
21 server {
22 listen 443;
23
24 proxy_pass $upstream;
25 ssl_preread on;
26 }
27}
测试一下:
1curl -v https://192.168.8.110
2
3ssh 192.168.8.110 -p 443
这样就可以了。