Open Yang03 opened 7 years ago
在一台服务器上启动多个node的时候,造成socket.io不可用
使用pm2,开启多个进程,和 nginx 的upstream io_node
upstream io_nodes { ip_hash; server 127.0.0.1:8080; server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; server 127.0.0.1:8084; } server { listen 80; server_name abc.xx.cn; access_log logs/host.access.log main; error_log logs/error.log warn; location / { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_http_version 1.1; proxy_pass http://io_nodes; } gzip on; gzip_comp_level 4; gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; gzip_vary off; gzip_disable "MSIE [1-6]"; gzip_min_length 66; }
{ "name": "feb-web", "script": "index.js", "exec_mode": "fork", "instances": 5, "env": { "NODE_ENV" :'production' } }
var instanceId = process.env.NODE_APP_INSTANCE || 0 //这个pm2 会当成参数传递进来 let port = 8080 + parseInt(instanceId, 10) server.listen(port, function() { console.log('listen' + port) });
var io = socket.io('http://abc.xx.com') //nginx 的server
问题:
在一台服务器上启动多个node的时候,造成socket.io不可用
解决方案
使用pm2,开启多个进程,和 nginx 的upstream io_node
首先看下nginx 的配置
pm2.json 的配置
node 代码
前端代码