为啥对 `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

spring MVC开发中静态页面访问路径为啥出错

为啥在本地运行php,好慢。