【发布时间】:2015-10-25 06:47:17
【问题描述】:
我正在尝试在 Debian 8 “Jessie” 上启动 Apache 2.4.10,并在其上托管多个网站运行。这可能是一个显而易见且已经回答的问题,但我从来没有需要设置一个专用的网络主机(通常只是为了开发需要放弃一个 WAMP 服务器或选择一个网络托管服务),到目前为止我还没有任何运气都可以找到我的问题的答案(我找到了与我想要实现的目标完全相反的答案)。我需要让它工作,因为除了托管几个网站之外,还会有额外的软件设置,常规的网络托管服务不会这样做。
一切似乎都按预期工作,但唯一的问题是我似乎找不到一个最佳配置,它不仅会阻止访问带有 403 - Forbidden 的默认 vhost。我需要的是 Apache 忽略来自访问默认虚拟主机或直接通过其指定 IP 访问服务器的任何人的请求(不仅仅是返回 404 文档,而是告诉浏览器那里什么都没有)。指定的 IP 应仅用于 SSH 访问(因为我对此服务器没有任何物理访问权限)。
基本上,网络服务器应该可以通过网络浏览器通过“FQDN-1”和“FQDN-2”(每个位于各自的目录中)访问,并且应该忽略访问该服务器上的任何其他网址(调用浏览器“404 未找到”而不是返回服务器错误文档,这表明存在某些东西)。
我当前的虚拟主机文件:
<VirtualHost *:80>
ServerName FQDN-1
ServerAlias www.FQDN-1
ServerAdmin mail@FQDN-1
DocumentRoot /var/www/FQDN-1/public_html
ErrorLog /var/www/FQDN-1/logs/error.log
CustomLog /var/www/FQDN-1/logs/access.log combined
</VirtualHost>
和
<VirtualHost *:80>
ServerName FQDN-2
ServerAlias www.FQDN-2
ServerAdmin mail@FQDN-2
DocumentRoot /var/www/FQDN-2/public_html
ErrorLog /var/www/FQDN-2/logs/error.log
CustomLog /var/www/FQDN-2/logs/access.log combined
</VirtualHost>
默认虚拟主机已通过“a2dissite 000-default”禁用
iptables 阻止除 tcp 端口 80 和 22 之外的所有内容(SSH 访问在 iptables 中被列入白名单,仅针对少数特定 iP)。
【问题讨论】:
-
您想重新启用默认虚拟主机,然后禁止访问它。确保它是第一个。使用
apache2ctl -t -D DUMP_VHOSTS检查您的配置。应该是类似 000-default、fqdn-1、fqdn-2 的顺序。 -
更新: 我将 phpmyadmin 作为默认虚拟主机,我重新启用了它......不是最佳结果,而是临时快速修复。 UPDATE-2:我会试试你的建议 mrjink。