如何将最近设置的cookie添加到nginx的访问日志中

eto*_*leb 5 nginx log-files cookies

我想在 nginx 访问日志中包含 cookie 数据,如下所示:

(简化示例)

log_format foo '$remote_addr "$request" $cookie_bar';
access_log /var/log/nginx/access.log foo;
Run Code Online (Sandbox Code Playgroud)

这对于已经有 cookie“bar”的请求非常有效,但是对于我的服务器的第一个请求,nginx 会将“-”报告为“bar”的值。

我的问题似乎是 nginx 正在查看请求标头中的 cookie 值。有没有办法检查响应中的 Set-Cookie 并将其用作后备?

eto*_*leb 5

我找到了一个解决我的问题的办法,但它通常不能解决问题。

nginx 允许您将响应标头元素传递到日志文件中,例如 Set-Cookie:

log_format foo '$remote_addr "$request" '
               '$cookie_bar set_cookie=$sent_http_set_cookie';
Run Code Online (Sandbox Code Playgroud)

不幸的是,它只输出第一个 Set-Cookie 命令,因此我需要确保我的应用程序服务器始终首先设置 bar cookie。通过一些正则表达式,我可以确保在未设置的$sent_http_set_cookie情况下获取设置的 cookie。$cookie_bar


Mar*_*ose 0

您是否考虑过在设置 cookie 后使用重定向并在下一个请求中执行适当的操作?