我有一个 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 配置中指定该端口号。