Как предотвратить использование nginx безопасных файлов cookie?

Мы устанавливаем secure flag на наших куки, и nginx отказывается их передавать, потому что мы общаемся с ним по HTTP.

Это вполне понятно, так как это ожидаемое поведение. Однако перед nginx мы запускаем классический балансировщик нагрузки (ранее известный как Elastic Load Balancer), который принимает HTTPS-трафик из Интернета и общается с nginx во внутренней сети через HTTP.

Итак, есть ли способ сказать nginx, что он не должен удалять куки, так как соединение в целом является доверенным?

2 ответа

Решение

Хорошо, прежде всего, когда вы отлаживаете "странную" проблему с сеансами, основанными на HTTP-cookie, убедитесь, что Set-Cookie заголовок даже отправляется сервером!

Когда вы установили, что он не отправляется (как я), вы захотите установить переменную окружения DEBUG в *, если вы используете приложение NodeJS/express.

Если вы это сделаете, вы можете заметить следующую строку в ваших журналах:

cookie-сеанс Ошибка сохранения сеанса Не удается отправить безопасный cookie-файл через незашифрованное соединение

Затем вы отследите эту строку до cookie-сессии, а затем - до cookie. Именно тогда вы понимаете, что все это имеет отношение к экспрессу, а не к тому, что соединение считается доверенным.

Таким образом, nginx не удаляет файлы cookie. В некотором смысле, это виновато, хотя. Я нашел ответ в переменной схемы nginx $ за балансировщиком нагрузки. Чтобы процитировать принятый ответ:

# Sets a $real_scheme variable whose value is the scheme passed by the load
# balancer in X-Forwarded-Proto (if any), defaulting to $scheme.
# Similar to how the HttpRealIp module treats X-Forwarded-For.
map $http_x_forwarded_proto $real_scheme {
  default $http_x_forwarded_proto;
  ''      $scheme;
}

Вы поместите это в свою конфигурацию nginx и затем используете $real_scheme вместо $scheme для X-Forwarded-Proto заголовок:

proxy_set_header "X-Forwarded-Proto" $real_scheme;

По умолчанию nginx не выполняет никакой обработки, связанной с secure флаг.

Другие вопросы по тегам