我安装了 centos + webmin + virtualmin。该 Web 服务器托管多个网站。
例如: domainA.myftp.org
domainB.myftp.org
domainC.myftp.org
所有域名共享同一个 IP 地址
但是当我直接输入公网 IP 地址 123.123.123.123 时,浏览器将显示 domainA.myftp.org
我可以在哪里设置 IP 地址的网站目录?这是 DNS 还是 Apache 虚拟主机或其他问题?有人知道吗?
答案1
正如 BillThor 提到的,如果没有匹配项,则第一个主机将成为默认主机。要覆盖该设置并使用第一个主机以外的主机,您可以在 apache ServerAlias 行中输入 ip 地址,如下所示:
# Use name-based virtual hosting.
#
NameVirtualHost *
<VirtualHost *>
DocumentRoot /var/www/
ServerName myhost.com
ServerAlias 10.20.30.40
ErrorLog logs/my-error_log
CustomLog logs/my-access_log common
<Directory /var/www/>
AllowOverride All
Order allow,deny
Options -Indexes FollowSymLinks ExecCGI
Allow from all
</Directory>
</VirtualHost>
答案2
在没有明确基于 IP 的虚拟主机的情况下...
<VirtualHost ipaddress:80>
DocumentRoot /srv/www/bare-ip/
</VirtualHost>
它将选择第一个与 IP 地址通配符匹配的虚拟主机:
<VirtualHost *:80>
ServerName domainA.myftp.org
stuff
</VirtualHost>
这给了你答案,你需要一个基于IP的虚拟主机声明为裸 IP 请求提供明确的网页目录。
答案3
这是标准行为。如果没有站点匹配,Apache 将匹配第一个(默认)站点。我设置了一个默认域来处理此类情况以及无效(未配置)域。
要通过 IP 地址支持多个域,您需要多个 IP 地址。如果您想通过 SSL 支持多个域,通常也是这种情况。有一些 SSL 解决方法。