Linux

在具有 2 個 IP 的同一系統上託管 Nginx 和 Apache

  • May 6, 2013

我的伺服器擁有兩個 IP 192.168.1.90 和 192.168.1.99 我希望 nginx 在 192.168.1.99 和 Apache 在 192.168.1.90 上偵聽我還需要在 apache 上託管多個虛擬主機。

嘗試將 apache 的 ports.conf 修改為

NameVirtualHost 192.168.1.90:80
Listen 80

<IfModule mod_ssl.c>
   # If you add NameVirtualHost *:443 here, you will also have to change
   # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
   # to <VirtualHost *:443>
   # Server Name Indication for SSL named virtual hosts is currently not
   # supported by MSIE on Windows XP.
   Listen 443
</IfModule>

<IfModule mod_gnutls.c>
   Listen 443
</IfModule>

然後我在 apache 中託管了一個虛擬主機

<VirtualHost 192.168.1.90:80>
DocumentRoot /home/webmaster/www/thefactor/
ServerName www.XYZ.com
ServerAlias XYZ.cu.com

# Other directives here

</VirtualHost>

問題在於所有流量,所有請求都來自 192.168.1.90,無論域名載入 XYZ.com。即:如果我將 ABC.com 指向 192.168.1.90,那麼當我瀏覽到它時,它會載入 XYZ.com 頁面,但地址欄中的地址將保持 ABC.com,因此它不是重定向。

知道為什麼會這樣

您定義的第一個虛擬主機將是“預設”主機。因此,對未在其他地方配置的域的所有請求都將轉到該第一台主機。

如果您希望對未在伺服器上配置但仍指向它的域的請求被忽略,您需要創建一個單獨的“擷取所有”虛擬虛擬主機,它只會拒絕所有請求,並且在 othosts 之前列出。

<VirtualHost 192.168.1.90:80>
   #Dummy Host denies all accesses.
   Order Allow, Deny
   Deny from all
</VirtualHost>

<VirtualHost 192.168.1.90:80>
   DocumentRoot /home/webmaster/www/thefactor/
   ServerName www.XYZ.com
   ServerAlias XYZ.cu.com

   # Other directives here
</VirtualHost>

引用自:https://serverfault.com/questions/505332