Apache-2.2

使用 mod_vhost_alias 時如何添加特定的 vhost 配置?

  • March 15, 2012

我使用 mod_vhost_alias 因為我很容易添加新的虛擬主機(我只需要創建一個目錄)。

/etc/apache2/mods-available/vhost_alias.conf

UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/htdocs

/etc/apache2/sites-available/default

<VirtualHost *:80>
   ServerAdmin webmaster@localhost
   DocumentRoot /var/www
   <Directory />
       Options FollowSymLinks
       AllowOverride None
   </Directory>
   <Directory /var/www/>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride None
       Order allow,deny
       allow from all
   </Directory>
</VirtualHost>

但是我需要配置一個自定義虛擬主機來使用mod_proxy,所以我創建了:

/etc/apache2/sites-available/mysite

<VirtualHost *>
   ServerName mysite.example.com
   ProxyPreserveHost On
   ProxyRequests Off
   <Proxy *>
       Order deny,allow
       Allow from all
   </Proxy>
   ProxyPass / http://192.168.1.12:7235/
   ProxyPassReverse / http://192.168.1.12:7235/
   <Location />
       Order allow,deny
       Allow from all
   </Location>
</VirtualHost>

雖然它對於 vhost_alias 配置工作正常,但當我嘗試請求 my.example.com 時,我得到了 404(因為主機名目錄不存在),並且我的站點已正確啟用。

有任何想法嗎?

將您的VirtualDocumentRoot /var/www/%0/htdocs指令移出/etc/apache2/mods-available/vhost_alias.conf,並移入<VirtualHost>塊中/etc/apache2/sites-available/default;你不希望它適用於一切。

另外 - 更改您的虛擬主機定義/etc/apache2/sites-available/mysite

<VirtualHost *>

到:

<VirtualHost *:80>

..並確保您在NameVirtualHost *:80某處有一個指令(ports.conf?),以便您的第二個虛擬主機實際收到請求。

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