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

Как добавить недавно установленные файлы cookie в журнал доступа 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 в ответе и использовать его в качестве запасного варианта?

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

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

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

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

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