nginx:使用nginx作为反向代理时,是否可以在访问日志中捕获响应头?
我们将nginx用作反向代理,以控制和记录对Clojure(Java)Web服务应用程序的访问。
我们可以生成一个access_log
并使用nginx捕获传入的标头。我们的Clojure应用程序通过log4j记录活动。问题是,我们无法将access_log
中的条目与应用生成的条目进行匹配。
该应用通过发送响应头和正文来响应访问。我们可以自由更改这些响应头。我最初的想法是生成一个与每个Web服务请求相对应的UUID,并将其发送到答复标头中的用户X-Uuid
。我的想法是我可以通过创建一个自定义来捕获此响应log_format
:
log_format lt-custom '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" $request_time $http_x_uuid';
看起来nginx可以捕获传入请求中的标头,但不能捕获传出回复中的标头(我通过替换$http_x_uuid
为进行了验证$http_content_type
)。
所以!有没有一种方法可以access_log
通过使用Nginx捕获传出的回复标头来绑定实体和log4j条目?有没有更好的办法?我宁愿不必依靠用户生成自己的UUID。
非常感谢!
回答:
$ http_x_uuid是客户端发送的标头。上游发送的响应头是$ upstream_http_x_uuid
http://wiki.nginx.org/HttpUpstreamModule#.24upstream_http_.24HEADER
以上是 nginx:使用nginx作为反向代理时,是否可以在访问日志中捕获响应头? 的全部内容, 来源链接: utcz.com/qa/416981.html