配置了基于 Apache 名称的虚拟主机,但两个主机名都指向同一站点

配置了基于 Apache 名称的虚拟主机,但两个主机名都指向同一站点

我有一个 apache2 网络服务器在我的 Raspberry Pi (raspbian) 上完美运行,我最近想创建另一个网站。为此,我尝试使用基于名称的虚拟主机。我从以下位置获得了另一个动态 dns 主机名https://my.noip.com/#!/dynamic-dns。我相信我已经正确配置了 2 个站点conf 文件和主机文件。

我的两个网站分别是 ashwingupta.ddns.net 和 javacloudcompile.ddns.net(这是我以前的网站)。但是,如果我连接到其中任何一个,我现在都会获得 ashwingupta.ddns.net 的站点。以下是配置文件:

主机

127.0.0.1   localhost
::1     localhost ip6-localhost ip6-loopback
ff02::1     ip6-allnodes
ff02::2     ip6-allrouters

127.0.1.1   raspberrypi
127.0.1.1       javacloudcompile.ddns.net
127.0.0.1       ashwingupta.ddns.net

javacloudcompile.ddns.net.conf

NameVirtualHost *:80
<VirtualHost *:8080>
    ServerName javacloudcompile.ddns.net
    ServerAdmin ashiwingupta@localhost
    DocumentRoot /var/www/html/vhosts/javacloudcompile.ddns.net/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

ashwingupta.ddns.net.conf

NameVirtualHost *:8080
<VirtualHost *:8080>
    ServerName ashwingupta.ddns.net
    ServerAdmin ashiwingupta@localhost
    DocumentRoot /var/www/html/vhosts/ashwingupta.ddns.net/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

我已经启用了两个站点,a2ensite并且两个站点都声称已正确启用。然后我刷新了 apache w/ service apache2 restart

(注意,一切都是故意在 8080 上进行的,我的 ISP 阻止 80 上的入站)

Listen 8080编辑:忘了提及,我的 ports.conf 中有

答案1

在我看来,NOIP 服务正在通过帧调用您的服务器,并且帧源是您服务器的 IP 地址,而不是域名:

<frame src="http://68.101.98.197:8080" name="redir_frame" frameborder=0>

您的 Apache 服务器未收到请求中的服务器名称。由于 conf 文件按字母顺序加载,因此 ashwingupta.ddns.net.conf 具有最高优先级,并被视为主要或默认服务器(请参阅https://httpd.apache.org/docs/2.2/vhosts/examples.html)。

解决此问题的一种方法是为 ashwingupta.ddns.net 使用不同的端口,例如端口 8081,假设您可以在 NOIP 配置中指定该端口号。

相关内容