基于 Apache IP 的托管解决方案显示 Apache 测试页面而不是网站

基于 Apache IP 的托管解决方案显示 Apache 测试页面而不是网站

我正在尝试设置虚拟服务器以基于 IP 托管网站。目前我尝试仅设置 1 个网站并使用 1 个 IP。

/etc/httpd/conf.d/example.com.conf 文件内容:

Listen 80
NameVirtualHost xx.xxx.xx.xxx:80

<VirtualHost xx.xxx.xx.xxx:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/sites/example.com/public
    ErrorLog /var/log/httpd/example.com/error.log
    CustomLog /var/log/httpd/example.com/access.log combined
</VirtualHost>

我从 httpd.conf 中删除了“Listen”和“NameVirtualHost”,并且仅在我的 example.com.conf 文件中使用它们。

我遇到的问题是 apache 测试页面启动而不是网站,但是一旦我将 IP 更改为“*”,它就可以正常工作:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/sites/example.com/public
    ErrorLog /var/log/httpd/example.com/error.log
    CustomLog /var/log/httpd/example.com/access.log combined
</VirtualHost>

知道为什么会发生这种情况吗?

更新!!我尝试使用的 IP 地址不是内部网络 IP,而是外部(公共)IP 地址。我有 3 个指向此服务器的公共 IP 地址。

谢谢,亚历克斯

答案1

由于防火墙或其他设备会将数据包上的 IP 从公有 IP 更改为私有 IP,因此您需要在 Apache 的配置中使用私有 IP。ApacheVirtualHost只会看到私有 IP,因此它不知道最初请求的公有 IP 是什么。

答案2

您还保留着welcome.confCentOS 放在 Apache conf 目录中的那个吗?

一旦您开始自定义 Apache 配置并且它充当默认的 catch-all vhost,就不再需要它了。

相关内容