全新(重新)安装 Apache,忽略默认虚拟主机

全新(重新)安装 Apache,忽略默认虚拟主机

我尝试了一些自定义“默认”Apache vhost 的方法,但似乎没有任何效果,我总是得到服务/var/www/html/index.html而不是我想要显示的其他内容或错误。

但最奇怪的是:每个访问日志都被记录到/var/log/apache2/other_vhosts_access.log而不是/var/log/apache2/access.log

我试过重置我的安装通过完全删除 Apache(不确定这是否足够)...

systemctl stop apache2
apt-get remove --purge apache2
rm -rf /etc/apache2
rm -rf /var/log/apache2
rm -rf /var/www/html
deluser --remove-home www-data
apt autoremove

...然后重新安装它并只更改端口(因为我使用 nginx 作为反向代理):

apt install apache2
sed -i 's/Listen 80/Listen 8080/' /etc/apache2/ports.conf

所以我现在有只有一个现有vhost存在于此安装中:(000-default.conf处于其原始状态)并且处于活动状态(已选中apache2ctl -S)。

即使在那之后,对我的 Web 服务器的任何调用仍然会由 nginx 重新路由到 Apache(没问题),并且仍然会将任何内容记录到/var/log/apache2/other_vhosts_access.log,这表明(据我理解)vhost 不是由 Apache 触发的(这不行)。

它不是一个“catchall”虚拟主机吗?它应该由发送给它的任何标头触发Host?为什么在这种情况下它不会被触发?

apache2.conf我对进行了一些测试,LogLevel debug并研究了/var/log/apache2/error.log/var/log/syslog,但我没有看到任何看似相关的内容(如果你们中有人认为这可能会有帮助,我仍然可以发布整个内容)。

答案1

我是个白痴...问题是由与默认安装唯一不同的东西引起的!

如果 Apache 没有监听端口 80,而是监听端口 8080(因为它位于拥有端口 80 访问权限的 nginx 反向代理后面),则必须相应地设置所有 Apache 虚拟主机。

Apache conf 总是在两个地方提到端口:

  • Listen 80/etc/apache2/ports.conf
  • <VirtualHost *:80>在所有 vhosts 中/etc/apache2/sites-available/*.conf(或sites-enabled

要更新两者的端口:

# Replace "Listen 80" by "Listen 8080" in ports.conf
sed -i '/^Listen 80$/ s/80/8080/' /etc/apache2/ports.conf

# Replace "<VirtualHost *:80>" by "<VirtualHost *:8080>" in all vhosts
sed -i 's/:80>/:8080>/' /etc/apache2/sites-available/*.conf

相关内容