В обратном прокси-сервере nginx как установить флаг безопасности для файлов cookie?

12

Я использую nginx в качестве обратного прокси-сервера для обслуживания сайта только для https. Поэтому я хочу, чтобы куки для этого сайта были помечены как безопасные. Но внутренний сервер является http-сервером, поэтому он не устанавливает флаг безопасности для своих файлов cookie. Как я могу изменить заголовок Set-Cookie в ответ, чтобы добавить безопасный флаг?

Тяньи Цуй
источник
Спросил и ответил на SO. См. SO для примера nginx для Tomcat7: stackoverflow.com/questions/19916906/…
Джозеф Луст
1
Такое переопределение в настоящее время невозможно, но есть проблема / тикет proxy_cookie_secure: trac.nginx.org/nginx/ticket/368 Однако это еще не реализовано (и проблема устарела ).
rugk
Этот сторонний модуль может вам помочь.
Airis

Ответы:

4

Возможно, вы сможете заставить свой прокси-сервер nginx изменять файлы cookie, созданные бэкэндом, и устанавливать флаг безопасности - для вдохновения см. Как переписать часть домена Set-Cookie в обратном прокси-сервере nginx? ,

Однако я думаю, что лучшим решением будет получить то, что создает cookie на бэкэнде, чтобы установить флаг безопасности. Как вы это делаете, это другая история (или вопрос :).

Джон Роудс
источник
4
Это может помочь вам установить X-Forwarded-Protoзаголовок и убедиться, что он интерпретируется вашим приложением. Это распространенный метод, который также позволяет смешанным http / https-приложениям правильно реагировать на основе протокола.
Лукас
4

Я использую следующий код конфигурации nginx:

# make cookie secure (case sensitive)
proxy_cookie_domain ~(?P<secure_domain>([-0-9a-z]+\.)?[-0-9a-z]+\.[a-z]+)$ "$secure_domain; secure";

Вместо регулярного выражения, чтобы сделать это динамичным, вы, конечно, можете использовать полное доменное имя.

R_3
источник
Это просто ответ или запрос и ответ. Когда клиент отправляет запрос с установленным флагом безопасности, nginx удаляет его, чтобы веб-сервер не жаловался?
Тигран
Клиенты не отправляют обратно флаг безопасности в Cookieзаголовке.
r_3