代码之家  ›  专栏  ›  技术社区  ›  jkndrkn

nginx:使用nginx作为反向代理时,是否可以在访问日志中捕获响应头?

  •  7
  • jkndrkn  · 技术社区  · 13 年前

    我们使用nginx作为反向代理来控制和记录对Clojure(Java)web服务应用程序的访问。

    我们能够生成 access_log 使用nginx捕获传入的头非常好。我们的Clojure应用程序通过log4j记录活动 访问日志 应用程序生成的条目。

    应用程序通过发送响应头和正文来响应访问。我们可以自由地更改这些响应头。我最初的想法是生成对应于每个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 ).

    所以!有没有办法把我的 访问日志 通过使用nginx捕获传出的回复头来获取enties和my log4j条目?有更好的办法吗?我宁愿不依赖用户生成自己的uuid。

    非常感谢!

    1 回复  |  直到 13 年前
        1
  •  14
  •   citrin    13 年前

    $http_x_uid是客户端发送的头。 上游发送的响应头是$upstream_http_x_uuid

    http://wiki.nginx.org/HttpUpstreamModule#.24upstream_http_.24HEADER