【问题标题】:Socket.io set cookie with nginxSocket.io 使用 nginx 设置 cookie
【发布时间】:2016-07-18 14:45:51
【问题描述】:

我的应用架构在这里。

  • 前端服务器 3000 - domain.com,向浏览器提供文件
  • api-server 3001 - api.domain.com
  • socket-server 3003 - io.domain.com

在开发模式下,socket请求有所有http请求cookie,

但在生产模式下使用 nginx(下到 conf),

socket cookie 只有一个 cookie io

  • 在开发中
  • 在产品中

这是 nginx conf(套接字服务器的一部分)。

server {
  server_name io.domain.com;

  location / {
    include proxy_params;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_http_version 1.1;
    proxy_pass http://127.0.0.1:3003;
  }
  location /socket.io/ {
    include proxy_params;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_http_version 1.1;
    proxy_pass http://127.0.0.1:3003;
  }
}

这里是socket客户端

const io = require('socket.io-client');
let socket;

if (process.env.NODE_ENV === 'production') {
  socket = io.connect('http://io.domain.com/noti');
} else {
  socket = io.connect('http://localhost:3003/noti');
}

module.exports = socket;

在开发环境中,它运行良好,但由于问题在生产模式下,我无法检索用户值。

我需要使用cookie值sessionId,token进行身份验证,但是两个cookie值消失了。

这有什么问题?

【问题讨论】:

    标签: node.js cookies nginx socket.io engine.io


    【解决方案1】:

    最重要的是,使用域设置 cookie。

    例如在node js中,

    res.setCookie({...
        domain: 'domain.com'
    });
    

    在 nginx conf 中,

    proxy_cookie_domain io.domain.com domain.com
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2022-06-18
      • 2012-03-11
      • 2016-12-17
      • 2018-05-18
      • 2013-12-29
      • 1970-01-01
      相关资源
      最近更新 更多