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;
    # 可以添加更多的服务器,并根据需求指定相应的参数
}
  1. 轮询 (round-robin):默认的负载均衡策略,每个请求按顺序分配到不同的后端服务器上。如果有服务器宕机或者不可用,Nginx
    会自动将其从服务器列表中剔除。
  2. 权重 (weight):可以为每个后端服务器指定一个权重值,用于控制请求被分配到各个服务器的概率。权重越高的服务器,被选中的概率越大。
  3. IP 哈希 (ip_hash):根据客户端的 IP 地址进行哈希运算,然后将其映射到后端服务器。这样可以确保相同的客户端 IP
    的请求始终被分配到同一台后端服务器上,有助于保持会话的一致性。
  4. 最少连接 (least_conn):将请求分配给当前连接数最少的后端服务器,以实现请求的负载均衡。
  5. 故障转移 (backup):指定备用服务器,在所有主服务器都不可用时,将请求转发给备用服务器。
最后修改:2024 年 05 月 05 日
如果觉得我的文章对你有用,请随意赞赏