Apache2 - 配置两个网站,一个使用 ip/端口,一个使用域名

Apache2 - 配置两个网站,一个使用 ip/端口,一个使用域名

我在 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 地址和端口组合的虚拟主机集合中未找到匹配的ServerNameServerAlias,则将使用匹配的第一个列出的虚拟主机。

因此您的配置文件(按顺序)应该是:

<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_条目应该是不必要的。任何不匹配raspberrypidomainname.com/ www.domainname.com(例如1.2.3.4)的请求都应匹配到第一个虚拟主机(raspberrypi)。

相关内容