我在 Raspberry Pi Apache2 服务器上托管两个网站。一个网站有域名,而第二个网站没有。我想使用相同端口上的服务器 IP 访问第二个网站,但不使用域名。
因此,为了访问第一个,我需要输入domainname.com
,而对于第二个,我需要输入1.2.3.4
。
在当前设置下,域名和 IP 都转到第一个网站。
这是我的两个.conf
文件:
<VirtualHost *:80>
ServerName domainname.com
ServerAlias www.domainname.com
ServerAdmin [email protected]
DocumentRoot /var/www/domainname.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost _default_:80>
ServerName raspberrypi
ServerAdmin [email protected]
DocumentRoot /var/www/domainname2.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
我应该为第二个网站输入什么ServerName
?因为它没有域名,我只是通过 IP 访问它?
我也尝试过使用_default_
但似乎没有任何效果?
答案1
您可能需要“反转”网站的条目。根据当前 Apache 2.4 文档基于名称的虚拟主机支持:
如果在包含最具体匹配的 IP 地址和端口组合的虚拟主机集合中未找到匹配的
ServerName
或ServerAlias
,则将使用匹配的第一个列出的虚拟主机。
因此您的配置文件(按顺序)应该是:
<VirtualHost *:80>
ServerName raspberrypi
ServerAdmin [email protected]
DocumentRoot /var/www/domainname2.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName domainname.com
ServerAlias www.domainname.com
ServerAdmin [email protected]
DocumentRoot /var/www/domainname.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
请注意,该_default_
条目应该是不必要的。任何不匹配raspberrypi
或domainname.com
/ www.domainname.com
(例如1.2.3.4
)的请求都应匹配到第一个虚拟主机(raspberrypi
)。