Nginx配置WebSocket负载均衡

2018-03-16 20:11:24
1225次阅读
0个评论

在 server 配置块中添加如下配置中的 location /socket.io/ 配置块即可实现 WebSocket 在 80/443 端口握手。

用1.3以后版本的nginx,原生支持websocket

server {  
    listen 80;    
    listen 443 ssl;
    server_name example.domain;
    root "/project/path";    
    index index.html index.htm index.php;

    location /socket.io/ {        
        # 此处改为 socket.io 后端的 ip 和端口即可
        proxy_pass http://127.0.0.1:8080;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
}

负载均衡

均衡算法要使用 ip_hash, 防止使用 long-polling 通信时请求分发到了不同的服务器导致异常。

server {  
    listen 80;    
    listen 443 ssl;
    server_name example.domain;
    root "/project/path";    
    index index.html index.htm index.php;    // 配置负载的后端
    
    upstream socket_nodes {
        ip_hash;
        server server1.app:8080 weight=5;
        server server2.app:8080;
    }

    location /socket.io/ {
        proxy_pass http://socket_nodes;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }

    // 其他配置项
    // ...
}




收藏00

登录 后评论。没有帐号? 注册 一个。