如何在使用mod_vhost_alias时添加特定的虚拟主机configuration?

我使用mod_vhost_alias,因为我很容易添加新的虚拟主机(我只需要创build一个目录)。

/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> 

不过,我需要configuration一个自定义虚拟主机使用mod_proxy ,所以我创build了:

/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_aliasconfiguration正常工作,当我尝试请求my.example.com时,我得到了404(因为主机名目录不存在),以及我的网站已正确启用。

有任何想法吗?

VirtualDocumentRoot /var/www/%0/htdocs指令移出/etc/apache2/mods-available/vhost_alias.conf ,并移入/etc/apache2/sites-available/default<VirtualHost> 你不希望它适用于一切。

另外 – 在/etc/apache2/sites-available/mysite更改你的vhost定义:

 <VirtualHost *> 

至:

 <VirtualHost *:80> 

..并确保你有一个NameVirtualHost *:80指令某处( ports.conf ?),这样你的第二个虚拟主机实际上得到请求。