我有一个 Apache 1.3 网络服务器,配置了多个VirtualHost
条目,可为多个独立网站提供服务。
某些时候,Apache 会收到大量请求,导致服务器负载过高。我想知道所有这些站点中的哪些正在接收请求。
我该怎么做?我读过Apache 的mod_info
模块,但不知道是否存在安全风险。
谢谢!
答案1
如果每个域都有一个日志文件,例如 /var/log/apache/domain.tld/access_log
然后,您可以使用 watch、sort 和 du 来找出哪个文件变化最快(因为 apache 总是将内容添加到日志文件中)
# watch "du -k /var/log/apache/*/access_log |sort -n"
或者如果你有很多文件,而你只对那些变化最大的文件感兴趣
# watch "du -k /var/log/apache/*/access_log |sort -n |tail -30"
答案2
我的建议是将您的修改LogFormat
为包括%v
,这是服务请求ServerName
的。<VirtualHost>
从那里,通过日志分析,您可以确定大多数请求来自哪里。
答案3
您可以使用以下命令记录请求的主机名:
%{Host}i
您可以使用以下方式记录 VirtualHost 的 ServerName:
%v