Я хотел бы включить данные 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 и выполняли ли соответствующие действия в следующем запросе?