Raspberry-Pi

已配置基於 Apache 名稱的虛擬主機,但兩個主機名都指向同一個站點

  • August 20, 2018

我有一個 apache2 網路伺服器在我的 Raspberry Pi (raspbian) 上完美執行,我最近想創建另一個站點。為此,我正在嘗試使用基於名稱的虛擬主機。我從https://my.noip.com/#!/dynamic-dns獲得了另一個動態 dns 主機名。我相信我已經正確配置了我的 2 個站點 conf 文件和 hosts 文件。

我的兩個網站分別稱為 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,並且都聲稱已正確啟用。然後我用service apache2 restart.

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

編輯:忘了提,Listen 8080我的ports.conf中有

在我看來,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 配置中指定該埠號。

引用自:https://unix.stackexchange.com/questions/333342