如何为通过 mod 代理的请求启用日志记录

Kar*_*iem 16 debug logging mod-proxy apache-2.2

有没有办法记录通过 mod 代理的请求?我需要一种方法来调试我的配置,因为我似乎没有到达我应该去的地方。我需要以下信息:

  • 传入请求的标头
  • 什么被发送到代理目标

也许是一个相关的问题:有没有办法去除一些标题?我尝试了以下方法:

ProxyPass         /proxy/other http://not.under.my.control/
<Location /proxy/other>
   ProxyPassReverse /
   RequestHeader unset Authorization
</Location>
Run Code Online (Sandbox Code Playgroud)

我真的不知道这是否可以,因为我什么也没看到。

小智 15

我用过dumpio。我把以下内容/etc/httpd/conf.d/dumpio.conf

LoadModule dumpio_module modules/mod_dumpio.so

DumpIOInput On
DumpIOOutput On
DumpIOLogLevel debug

LogLevel debug
Run Code Online (Sandbox Code Playgroud)

一个经常被遗忘的部分是将 LogLevel 设置为调试。没有它,您实际上不会看到任何 DumpIO 输出。

日志输出将写入虚拟主机和/或服务器的错误日志。

  • 指令“DumpIOLogLevel”不再存在。必须按照[mod_dumpio](https://httpd.apache.org/docs/current/mod/mod_dumpio.html)中的描述设置`LogLevel dumpio:trace7` (5认同)
  • 结果证明对我很有帮助。谢谢!在 Ubuntu 上,我使用了 `$ a2enmode dump_io` 之后,我将答案中的行添加到 VirtualHost 指令中。在发出请求时检查了 `$ tail -f /var/log/apache2/error.log` 并获得了我需要的所有信息。完成调试后,最好通过`$ a2dismode dump_io` 关闭它并恢复VirtualHost。否则你会得到非常臃肿的日志。 (2认同)

yun*_*zen 12

您还可以附加proxy:trace5到现有LogLevel指令中

如果你有这个

LogLevel error 
Run Code Online (Sandbox Code Playgroud)

改成这样

LogLevel error proxy:trace5
Run Code Online (Sandbox Code Playgroud)

使用后请务必将其恢复正常。这将快速创建巨大的日志文件。

  • 这不适用于 apache 2.2,这个问题被标记为 apache 2.2。 (2认同)

Dec*_*ado 6

如果您将 LogLevel 更改为调试,它将为您提供有关标准错误日志中发生的情况的更多详细信息。

LogLevel debug
Run Code Online (Sandbox Code Playgroud)

这将为您提供有关正在发生的事情的大量信息。


Ham*_*sLi 5

另一种选择可能是mod_forensic,可以轻松记录请求和标头等。不过请注意磁盘空间使用情况,在负载较重的网站上,mod_forensic 每天可以轻松生成数十个 Gig。

http://httpd.apache.org/docs/2.2/mod/mod_log_forensic.html