最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

WebSocket NGINXNODEJS粘性问题

运维笔记admin14浏览0评论

WebSocket NGINX / NODEJS粘性问题

WebSocket NGINX / NODEJS粘性问题

我正在编写Web套接字项目,一切都像预期的那样(本地),我使用:

  1. NGINX作为WebSockets代理
  2. NODEJS作为后端服务器
  3. WS作为websocket模块:ws

NGINX配置:

map $http_upgrade $connection_upgrade {
     default upgrade;
     ''      close;
}
upstream backend_cluster {
    server 127.0.0.1:5050;
}

# Only retry if there was a communication error, not a timeout.
proxy_next_upstream error;
server {
    access_log /code/logs/access.log;
    error_log /code/logs/error.log  info;
    listen    80;
    listen    443 ssl;
    server_name  mydomain;
    root html;

    ssl_certificate         /code/certs/sslCert.crt;
    ssl_certificate_key     /code/certs/sslKey.key;
    ssl_protocols           SSLv3 TLSv1 TLSv1.1 TLSv1.2; # basically same as apache [all -SSLv2]
    ssl_ciphers             HIGH:MEDIUM:!aNULL:!MD5;

    location /websocket/ws {
    proxy_pass http://backend_cluster;
    proxy_http_version 1.1;
    proxy_redirect off ;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    }
}    

就像我提到的那样,在本地和在开发环境中的一台机器上工作得很好,我担心的问题是当我们要进入生产时,在生产环境中将有更多的那个nodejs服务器。在生产中,nginx的配置将类似于:

upstream backend_cluster {
    server domain1:5050;
    server domain2:5050;
}

所以我不知道NGINX如何解决粘性问题,这意味着我怎么知道在一台服务器上完成'HANDSHAKE /升级'后,如何知道继续使用同一台服务器,有没有办法告诉NGINX坚持使用同一台服务器?

我希望我能清楚自己。提前致谢

回答如下:

使用此配置:

upstream backend_cluster {
    ip_hash;                    
    server domain1:5050;
    server domain2:5050;
}

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论