我正在尝试设置虚拟服务器以基于 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.conf
CentOS 放在 Apache conf 目录中的那个吗?
一旦您开始自定义 Apache 配置并且它充当默认的 catch-all vhost,就不再需要它了。