为啥对 `Host: localhost` 的 HTTP 请求不会出现在 Apache2 访问日志中?
Posted
技术标签:
【中文标题】为啥对 `Host: localhost` 的 HTTP 请求不会出现在 Apache2 访问日志中?【英文标题】:Why do HTTP requests to `Host: localhost` not appear in Apache2 access logs?为什么对 `Host: localhost` 的 HTTP 请求不会出现在 Apache2 访问日志中? 【发布时间】:2021-09-22 15:15:56 【问题描述】:我在我的本地机器上安装了 LAMP 堆栈,这样我就可以制作 WordPress,而无需在所述制作期间付费托管它们。我使用定制的日志格式创建了一个 Apache2 自定义日志文件,以便我可以检查浏览器发送到服务器的请求中 Host:
标头的值(这是一种故障排除措施,用于尝试确定配置的原因不匹配,我后来发现这是一个 WordPress 问题)。然而,我发现对localhost
的请求不会出现在访问日志中,而对my_virtual_host_server_name
的请求会出现。
在我的/etc/hosts
文件中,两个主机名都指向127.0.0.1
,但是my_virtual_host_server_name
与我的<VirtualHost>
配置相匹配;但是 CustomLog
指令是在主 Apache 配置文件中定义的,因此它应该适用于对服务器的任何请求。我真的不知道从哪里开始,任何帮助将不胜感激。
【问题讨论】:
你有 other_vhosts_access.log 吗?如果请求与正常的虚拟主机不匹配,则为后备。使用编辑的主机文件,名称请求会转到本地主机,但具有不同的标头。 【参考方案1】:事实证明,当我的浏览器向my_virtual_host_server_name
发出请求时,它匹配了一个没有指定任何CustomLog
指令的<VirtualHost>
配置,所以它很高兴地默认为全局CustomLog
防御,就像我一样故意的。但是,当浏览器向localhost
发出请求时,这与默认的<VirtualHost>
配置000-default.conf
匹配,该配置确实包含CustomLog
定义,该定义覆盖了全局配置,因此不会将信息记录到我在其中定义的自定义日志文件中/etc/apache2/apache2.conf
;就是这样。
【讨论】:
以上是关于为啥对 `Host: localhost` 的 HTTP 请求不会出现在 Apache2 访问日志中?的主要内容,如果未能解决你的问题,请参考以下文章
使用 ssh 从主机 A 通过主机 B 访问主机 C 的 localhost
为啥localhost和127.0.0.1能访问tomcat,本机ip就不能访问
为啥我的mysql,用本地IP连接不上,但是用localhost就可以连接的上
报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost