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


14

有没有一种方法可以记录通过mod Proxy进行的请求?我需要一种调试配置的方法,因为我似乎并没有达到应有的水平。我需要以下信息:

  • 传入请求的标头
  • 发送到代理目标的内容

也许是一个相关的问题:是否有一种方法可以剥离一些标头?我尝试了以下方法:

ProxyPass         /proxy/other http://not.under.my.control/
<Location /proxy/other>
   ProxyPassReverse /
   RequestHeader unset Authorization
</Location>

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


我将使用mitmproxy这种调试。
小鸡

Answers:



10

我用了dumpio。我将以下内容放入/etc/httpd/conf.d/dumpio.conf

LoadModule dumpio_module modules/mod_dumpio.so

DumpIOInput On
DumpIOOutput On
DumpIOLogLevel debug

LogLevel debug

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

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


2
事实证明对我很有帮助。谢谢!在Ubuntu上,我去了$ a2enmode dump_io之后,我在答案中添加了行到VirtualHost指令。$ tail -f /var/log/apache2/error.log在发出请求的同时签出并获得了我需要的所有信息。调试完成后,最好通过$ a2dismode dump_io还原VirtualHost 将其关闭。否则,您将获得非常肿的日志。
uKolka 2014年

1
指令“ DumpIOLogLevel”不再存在。其中有一组LogLevel dumpio:trace7中所述mod_dumpio
大卫Tonhofer

4

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

LogLevel debug

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


1
尽管我现在在日志中有很多有关代理的其他信息,但是我想看到的信息不存在。使用LogFormat,我们可以以某种方式获得我要求的信息吗?
Kariem 2011年

1
体验一下LogFormat,请注意,您可以使用mod_forensic和mod_security获得更多详细信息
Decado

在Apache 2.4中,LogLevel指令位于/etc/apache2/apache2.confUbuntu上。似乎很明显,但是我花了一点时间才弄清楚。
Shrout19年

2

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

如果你有这个

LogLevel error 

改成这个

LogLevel error proxy:trace5

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


这不适用于apache 2.2,该问题被标记为。
Brian Minton '18

1

mod_security可以记录请求正文和标头,等等。链接


1
最佳做法是提供简要的摘要。截至2015-08年,链接似乎已死...
sage

-2

您可以使用这些日志,但它们不会完全给您您想要的:

<VirtualHost yourdomain.com> 
    Customlog yourdomain.com-access.log combined 
    ErrorLog yourdomain.com-error.log
# Your other stuff
</VirtualHost>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.