Как добавить недавно установленные куки в журнал доступа nginx

Я хотел бы включить данные cookie в журнал доступа nginx следующим образом:

(упрощенный пример)

log_format foo '$remote_addr "$request" $cookie_bar';
access_log /var/log/nginx/access.log foo;

Это прекрасно работает с запросами, у которых уже есть cookie "bar", но для первого запроса к моему серверу nginx сообщит "-" как значение "bar".

Похоже, моя проблема в том, что nginx просматривает заголовки запроса для значения cookie. Есть ли способ проверить наличие Set-Cookie в ответе и использовать его как запасной вариант?

2 ответа

Я нашел хакерское решение моей проблемы, но оно не решает проблему в целом.

nginx позволяет передавать элементы заголовка ответа в файл журнала, например, Set-Cookie:

log_format foo '$remote_addr "$request" '
               '$cookie_bar set_cookie=$sent_http_set_cookie';

К сожалению, он выводит только первую команду Set-Cookie, поэтому мне нужно убедиться, что мой сервер приложений всегда сначала устанавливает cookie-файл бара. И с небольшим регулярным выражением я могу убедиться, что файл cookie установлен в $sent_http_set_cookie если $cookie_bar не установлен

Рассматривали ли вы возможность использования перенаправления после установки файла cookie и выполняете ли соответствующие действия в следующем запросе?

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