nginx 转发ws流量+负载均衡
安装nginx,普通apt/yum安装即可(略)。。。
http {
#上段开始
upstream x01 { #配置名称
server a1.xxx.com:80; #转发目标域名:目标端口
}
upstream x02 { #配置名称
server a2.xxx.com:80; #转发目标域名:目标端口
}
server {
listen 10000; #入端口
server_name a.abc.com;
location / {
proxy_pass http://x01; #名称
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 10001; #入端口
server_name a.abc.com;
location / {
proxy_pass http://x02; #名称
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
1.
upstream x02 { ... }
: 这个部分定义了一个名为 x02 的 upstream 块,用于定义后端服务器的集群。在这个配置中,x02 包含一个服务器,即 a2.xxx.com:80。2.
server a2.xxx.com:80;
: 这行指定了一个后端服务器,其域名为 a2.xxx.com,端口为 80。这意味着在代理请求时,会将请求转发给这个后端服务器。1.
location / {
: 这里定义了一个 Nginx 的 location 块,它匹配所有请求路径。2.
proxy_pass http://x02;
: 这行指令将请求转发到名为 x02 的后端服务器。http:// 表示使用 HTTP 协议进行代理传输。3.
proxy_http_version 1.1;
: 这行指令指定了代理服务器与后端服务器之间使用的 HTTP 版本,这里是 1.1 版本。4.
proxy_set_header Upgrade $http_upgrade;
: 这行指令用于设置请求头中的 Upgrade 字段为与客户端相同的值。通常用于 WebSocket 代理。5.
proxy_set_header Connection "upgrade";
: 这行指令设置了 Connection 请求头为 "upgrade",也是用于支持 WebSocket 代理的标准配置。6.
proxy_set_header Host $host;
: 这行指令设置了代理请求头中的 Host 字段为客户端的 Host 字段,保持请求的 Host 一致性。7.
proxy_set_header X-Real-IP $remote_addr;
: 这行指令设置了代理请求头中的 X-Real-IP 字段为客户端的真实 IP 地址,用于记录客户端的真实 IP。8.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
: 这行指令设置了代理请求头中的 X-Forwarded-For 字段,将客户端的原始 IP 地址添加到已有的 X-Forwarded-For 头部中,用于跟踪请求的来源。**
负载均衡
**
upstream x01 {
server a1.xxx.com:80;
server a2.xxx.com:80 weight=2;
server a3.xxx.com:80;
server a4.xxx.com:80 backup;
# 可以添加更多的服务器,并根据需求指定相应的参数
}
- 轮询 (round-robin):默认的负载均衡策略,每个请求按顺序分配到不同的后端服务器上。如果有服务器宕机或者不可用,Nginx
会自动将其从服务器列表中剔除。 - 权重 (weight):可以为每个后端服务器指定一个权重值,用于控制请求被分配到各个服务器的概率。权重越高的服务器,被选中的概率越大。
- IP 哈希 (ip_hash):根据客户端的 IP 地址进行哈希运算,然后将其映射到后端服务器。这样可以确保相同的客户端 IP
的请求始终被分配到同一台后端服务器上,有助于保持会话的一致性。 - 最少连接 (least_conn):将请求分配给当前连接数最少的后端服务器,以实现请求的负载均衡。
- 故障转移 (backup):指定备用服务器,在所有主服务器都不可用时,将请求转发给备用服务器。