NGINX прокси не устанавливает cookie сеанса - PullRequest
0 голосов
/ 07 августа 2020

У меня есть приложение Rails в качестве API и приложение Nuxt. js (Vue. js) в качестве внешнего клиента.

В настоящее время я обслуживаю их локально. Rails работает на порту 3000, а Nuxt. js работает на порте 4000

Установите my /etc/hosts на имя домена: api.todos.test для Rails и todos.test для Nuxt. js

Мои конфигурации NGINX:

upstream rails_api {
  server 127.0.0.1:3000;
}

server {
    listen       80;
    listen       [::]:80;
    server_name  ~^(?<subdomain>.+)\.todos.test;

    location ~ ^/rest/ {
        proxy_pass http://rails_api;
        proxy_set_header Real-IP       $remote_addr;
        proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header NginX-Proxy   true;
        proxy_set_header Host          $subdomain.todos.test:3000;
        proxy_pass_header Set-Cookie;
        proxy_redirect off;
    }

    location / {
        proxy_pass http://todos.test:4000;
        proxy_set_header Real-IP $remote_addr;
        proxy_set_header Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header NginX-Proxy true;
        proxy_set_header Host        $host;
        proxy_redirect off;
    }
}

Я могу попасть на оба сервера, поэтому NGINX обрабатывает проксирование. My Rails API возвращает ответ с Set-Cookie: _session_id=..., но по какой-то причине это никогда не устанавливается в Chrome.

Я что-то делаю не так в NGINX?

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Похоже, что при использовании NGINX (или, возможно, любого обратного прокси) необходимо установить domain в Cook ie при его отправке с сервера.

0 голосов
/ 07 августа 2020

Отправляете ли вы запрос XHR в этот Rails API?

Браузер не может предоставить доступ к сторонним файлам cookie, подобным тем, которые были получены из запросов ajax по соображениям безопасности.

Вы можете получить / установить повар ie вручную. Пожалуйста, обратитесь к этому вопросу. Как получить ie повара из ответа AJAX?

...