我有兩個網站在Apache服務器後面運行。在Apache中解析爲錯誤的VirtualHost的根請求
其中之一用於請求api.xyzzy.com
其他供應自帶的(幾十個域,子域等),因此是一個包羅萬象的通配符的任何其他業務。
用下面的配置,請求深層鏈接http://api.xyzzy.com/下...去到正確的虛擬主機(第一個),但頂級請求http://api.xyzzy.com/負載第二包羅萬象的通配符的虛擬主機來代替。
我在這裏做了什麼錯?
LoadModule passenger_module /home/webby/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /home/webby/.rvm/gems/ruby-1.9.3-p286/gems/passenger-3.0.18
PassengerRuby /home/webby/.rvm/wrappers/ruby-1.9.3-p286/ruby
NameVirtualHost *:80
<VirtualHost *:80>
ServerName api.xyzzy.com
ServerAlias api.xyzzy.com
RailsEnv production
DocumentRoot /home/webby/rails/current/public
</VirtualHost>
<VirtualHost *:80>
ServerAlias *
<Directory /usr/local/xyzzy/webapps/wwwroot >
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>
UPDATE:
下面的配置似乎是工作爲現在的預期。這是基於@ Winfield的回答。
看來我的測試可能是錯誤的。我的瀏覽器(Chrome)可能會自動填寫我輸入的地址,並且使用https(而不是http)前綴。不幸的是,我沒有注意到這個異常,直到嘗試了幾十個配置的排列之後,很難說出最終的正確解決方案。我應該在命令行上使用curl進行更可靠的測試,而不是在瀏覽器欄中輸入內容。
<VirtualHost *:80>
<Directory /usr/local/xyzzy/webapps/wwwroot >
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
DocumentRoot /usr/local/xyzzy/webapps/wwwroot
</VirtualHost>
<VirtualHost *:80>
ServerAlias api.xyzzy.com
RailsEnv production
DocumentRoot /home/webby/rails/current/public
</VirtualHost>
您是否有任何NameVirtualHost指令?因爲我沒有看到Apache會如何(或爲什麼)以不同的方式對待它們... –
是的另一個conf文件定義:$ grep NameV * .conf ports.conf:NameVirtualHost *:80 –
好吧,但我仍然沒有得到你在做什麼。 VirtualHosts的命名都是一樣的嗎?爲什麼第二個存在? –