2016-07-14 21 views
0

私のアプリのアーキテクチャはこちらです。Socket.ioはnginxでクッキーを設定しました

  • フロントサーバ3000 - domain.com、ブラウザ
  • APIサーバ3001にファイルを提供 - api.domain.com
  • ソケット・サーバー3003 - io.domain.com
DEVモードでは、ソケット要求で

、すべてのHTTP要求のクッキーを持って

しかし、(confにまで)のnginxと生産モードでは、

ソケットクッキーはちょうどこれはnginxのconfに(ソケットサーバーの一部)であるPROD In prod

でDEV enter image description here

    • IOクッキーを持っています。ここで

      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; 
          } 
      } 
      

      はソケットクライアントが開発ENVで

      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; 
      

      あり、それは問題のためだけでなくしかし、プロダクションモードで動作しますが、私は、ユーザーの値を取得することはできません。

      トークンをauthにするためにsessionIdというクッキー値を使用する必要がありますが、2つのクッキー値は消えています。

      どうしたのですか?

  • 答えて

    0

    ほとんどの場合、ドメインでCookieを設定します。ノードJS、

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

    とnginxのconfには、

    proxy_cookie_domain io.domain.com domain.com 
    
    、例えば

    関連する問題