Назад | Перейти на главную страницу

Файлы cookie, представленные в инспекторе Chrome, отсутствуют на сервере

У меня есть установка, состоящая из двух экземпляров nginx, подключенных один за другим. Первый на одном сервере (A) а второй находится на втором сервере (B):

user <-> nginx (A) <-> nginx (B) <-> api frontend (B)
                                 <-> api backend (B)

Сервер (A) защищен SSL, а затем перенаправляет запросы на сервер (B) с помощью proxy_pass. Это из конфигурации A:

location / {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $http_host;
  proxy_pass http://B;
}

И подобные вещи происходят (B), чтобы передать все запросы фактическому приложению (есть и другие директивы местоположения, но это актуальная):

location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://api_frontend;
}

У меня проблемы с файлами cookie сеанса. Приложение (интерфейс api) правильно устанавливает файлы cookie, и я могу видеть их с помощью инспектора браузера. Однако когда приложение читает файлы cookie, оно получает только некоторые файлы cookie, но не сеансовый. Думаю, есть какая-то проблема с двойной конфигурацией nginx.

По какой-то причине cookie был передан из nginx (A) в nginx (B), но не в приложение. Я не знаю, почему это так, но я решил свою проблему с помощью следующего дополнения к телу местоположения:

proxy_set_header Cookie "session=$cookie_session"

где session имя интересующего файла cookie.