我使用 mod_vhost_alias 因为对我来说添加新的 vhost 真的很容易(我只需要创建一个目录)。
/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>
但是我需要配置自定义 vhost 来使用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(因为主机名目录不存在),但我的站点已正确启用。
有任何想法吗?
答案1
将您的VirtualDocumentRoot /var/www/%0/htdocs
指令从 移出/etc/apache2/mods-available/vhost_alias.conf
并移入<VirtualHost>
中的块中/etc/apache2/sites-available/default
;您不希望它应用于所有内容。
另外 - 更改您的 vhost 定义/etc/apache2/sites-available/mysite
:
<VirtualHost *>
到:
<VirtualHost *:80>
..并确保你NameVirtualHost *:80
在某处有一个指令(ports.conf
?),以便你的第二个虚拟主机真正收到请求。