公司网络访问服务器A非常不稳定,那么就弄个中转服
在中转服安装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
- 协议:WebSocket + TLS
服务器B(中转服)配置
- 地址:https://jump.server.com
- 端口:my_port
- 协议:TLS
客户端只需要访问新的 IP:PORT 即可,其他不用修改。
nginx配置解析
1. proxy_redirect off;
- 关闭 代理重定向。
- 默认情况下,Nginx 会尝试修改目标服务器返回的重定向地址以匹配代理服务器。这里关闭这个行为,以确保重定向地址保持目标服务器原样。
2. proxy_http_version 1.1;
- 设置与目标服务器通信时使用 HTTP/1.1 协议。
- WebSocket 等功能需要 HTTP/1.1 支持。
3. proxy_set_header Upgrade $http_upgrade;
- 添加或修改 HTTP 请求头部中的
Upgrade
字段,值为$http_upgrade
。 -
$http_upgrade
是一个 Nginx 的变量,用于动态获取客户端请求头中的Upgrade
字段值。 -
用途: WebSocket 通信需要
Upgrade
头部来指示协议切换。
4. proxy_set_header Connection "upgrade";
- 设置 HTTP 请求头部中的
Connection
字段为"upgrade"
。 - 这一配置与
Upgrade
头部配合,用于支持 WebSocket 协议。 - 作用: 通知目标服务器,这次连接需要升级为 WebSocket 或其他协议。
5. proxy_set_header Host $host;
- 设置 HTTP 请求头部中的
Host
字段为$host
,即客户端请求中的主机名。 -
用途: 保持请求头的
Host
字段与客户端原始请求一致。- 例如:客户端请求
target.server.com
时,目标服务器接收的Host
字段也将是target.server.com
,而不是目标地址server.com
。
- 例如:客户端请求
-
好处: 有助于目标服务器根据
Host
字段进行正确的域名解析或虚拟主机分流。