公司網(wǎng)絡訪問服務器A非常不穩(wěn)定柒凉,那么就弄個中轉服
在中轉服安裝nginx
,添加配置
server {
listen my_port ssl;
server_name jump.server.com;
ssl_certificate my_fullchain.pem;
ssl_certificate_key my_privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass https://target.server.com:target_port;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
服務器A上的服務配置為
- 地址:https://target.server.com
- 端口:target_port
- 協(xié)議:WebSocket + TLS
服務器B(中轉服)配置
- 地址:https://jump.server.com
- 端口:my_port
- 協(xié)議:TLS
客戶端只需要訪問新的 IP:PORT 即可表窘,其他不用修改顽耳。
nginx配置解析
1. proxy_redirect off;
- 關閉 代理重定向粉寞。
- 默認情況下,Nginx 會嘗試修改目標服務器返回的重定向地址以匹配代理服務器萄窜。這里關閉這個行為,以確保重定向地址保持目標服務器原樣。
2. proxy_http_version 1.1;
- 設置與目標服務器通信時使用 HTTP/1.1 協(xié)議查刻。
- WebSocket 等功能需要 HTTP/1.1 支持键兜。
3. proxy_set_header Upgrade $http_upgrade;
- 添加或修改 HTTP 請求頭部中的
Upgrade
字段,值為$http_upgrade
穗泵。 -
$http_upgrade
是一個 Nginx 的變量普气,用于動態(tài)獲取客戶端請求頭中的Upgrade
字段值。 -
用途: WebSocket 通信需要
Upgrade
頭部來指示協(xié)議切換佃延。
4. proxy_set_header Connection "upgrade";
- 設置 HTTP 請求頭部中的
Connection
字段為"upgrade"
现诀。 - 這一配置與
Upgrade
頭部配合,用于支持 WebSocket 協(xié)議履肃。 - 作用: 通知目標服務器仔沿,這次連接需要升級為 WebSocket 或其他協(xié)議。
5. proxy_set_header Host $host;
- 設置 HTTP 請求頭部中的
Host
字段為$host
尺棋,即客戶端請求中的主機名封锉。 -
用途: 保持請求頭的
Host
字段與客戶端原始請求一致。- 例如:客戶端請求
target.server.com
時膘螟,目標服務器接收的Host
字段也將是target.server.com
成福,而不是目標地址server.com
。
- 例如:客戶端請求
-
好處: 有助于目標服務器根據(jù)
Host
字段進行正確的域名解析或虛擬主機分流萍鲸。