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