Linux

如何設置 VirtualHosts 以將同一 IP 上的兩個埠指向不同的 ServerNames?

  • December 22, 2012

我已將 wiki 軟體 Gitit 設置為在同一 Apache 伺服器的兩個獨立埠(埠 1848 和 4000)上執行。我已經確認他們正在執行。

現在我想將這兩個站點代理為更漂亮的 URL,例如 sitea.com 和 siteb.com。兩者的 IP 地址相同(例如 12.34.56.78)。

我的伺服器管理員為名稱添加了 DNS 條目,但我似乎無法讓我的 Apache 配置正常工作。按照此處的說明,我嘗試像這樣設置 VirtualHost:

NameVirtualHost *:1848

<VirtualHost *:1848>
   ServerName sitea.com
   DocumentRoot /var/www/
   RewriteEngine On
   ProxyPreserveHost On
   ProxyRequests Off

   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>

   ProxyPassReverse /    http://127.0.0.1:1848
   RewriteRule ^(.*) http://127.0.0.1:1848$1 [P]

   ErrorLog /var/log/apache2/error.log
   LogLevel warn

   CustomLog /var/log/apache2/access.log combined
   ServerSignature On

</VirtualHost>

另一個類似的虛擬主機在埠 4000 上。但是當我隨後發出時service httpd restart,我在啟動 httpd 時收到一條FAILED消息,並且我的瀏覽器無法連接到 sitea.com。

據我所知,我的 httpd.conf 的其餘部分是發行版附帶的預設文件。我的伺服器正在 RedHat Enterprise 機器上執行。我是 Apache 的新手,所以我確信這裡有一個明顯的答案,但是在嘗試了對配置的各種調整之後,我無法弄清楚我做錯了什麼。

**編輯:**問題是我沒有檢查以確保我的錯誤日誌的路徑名是正確的。我的發行版將日誌儲存在 /var/log/httpd 而不是 /var/log/apache2 中。(臉紅。)

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

此範例來自虛擬主機的 apache 文件<VirtualHost/>在每個塊中定義反向代理設置。

下面的配置可能會有所幫助

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName sitea.com
   DocumentRoot /var/www/
   RewriteEngine On
   ProxyPreserveHost On
   ProxyRequests Off

   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>

   ProxyPass        /    http://127.0.0.1:1848/
   ProxyPassReverse /    http://127.0.0.1:1848/

   ErrorLog /var/log/apache2/error.log
   LogLevel warn

   CustomLog /var/log/apache2/access.log combined
   ServerSignature On
</VirtualHost>

<VirtualHost *:80>
   ServerName siteb.com
   DocumentRoot /var/www/
   RewriteEngine On
   ProxyPreserveHost On
   ProxyRequests Off

   <Proxy *>
      Order deny,allow
      Allow from all
   </Proxy>

   ProxyPass        /    http://127.0.0.1:4000/
   ProxyPassReverse /    http://127.0.0.1:4000/

   ErrorLog /var/log/apache2/error.log
   LogLevel warn

   CustomLog /var/log/apache2/access.log combined
   ServerSignature On
</VirtualHost>

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