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

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

我使用 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?),以便你的第二个虚拟主机真正收到请求。

相关内容