Назад | Перейти на главную страницу

Как добавить конкретную конфигурацию vhost при использовании mod_vhost_alias?

Я использую 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>

Однако мне нужно настроить собственный виртуальный хост, чтобы использовать 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 (потому что каталог hostname не существует), и мой сайт правильно включен.

Любые идеи?

Переместите свой 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?), так что ваш второй виртуальный хост действительно получает запросы.