Socket.io устанавливает cookie с помощью nginx

Моя архитектура приложения здесь.

  • front-server 3000 - domain.com, подавать файлы в браузер
  • api-сервер 3001 - api.domain.com
  • сокет-сервер 3003 - io.domain.com

В режиме разработки для запроса сокета используются все файлы cookie HTTP-запроса,

Но в производственном режиме с nginx (вплоть до conf),

печенька в сокете просто есть печенье

  • В dev введите описание изображения здесь
  • В прод В прод

Это 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;
  }
}

Вот сокет-клиент

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 cookie sessionId, токен для аутентификации, но два значения cookie исчезли.

Что с этим не так?

1 ответ

Решение

Прежде всего, установить куки с доменом.

Например, в узле JS,

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

И в конфу nginx,

proxy_cookie_domain io.domain.com domain.com
Другие вопросы по тегам