Linux
如何設置 VirtualHosts 以將同一 IP 上的兩個埠指向不同的 ServerNames?
我已將 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>