Конфигурация субдомена с использованием apache2 и виртуальных хостов
Я настраиваю веб-страницу на сервере, на котором работает Ubuntu 12.04.
Я деактивировал сайты по умолчанию ( a2dissite default default-ssl), и я создал новый, тот, который мне нужен и работает, который будет поддоменом.
Представь, что у меня есть foo.com. Моя цель состоит в том, чтобы foo.com выдавал ошибку 403 http, а sub.foo.com отображал нужную мне веб-страницу. Мой виртуальный хост выглядит примерно так:
foo.com (по умолчанию)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName foo.com
DocumentRoot /var/www/default
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/default/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
sub.foo.com
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName sub.foo.com
DocumentRoot /var/www/sub
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/sub/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Когда я захожу на sub.foo.com, страница отображается. Когда я захожу на foo.com, отображается та же страница (:S), и мне нужно 403 здесь...
Что я делаю неправильно?
1 ответ
Вы включили NamedVirtualHosts в своей конфигурации Apache? Apache дает вам какие-либо предупреждения при перезапуске? Все сайты включены?
У них настроены разные DocumentRoots, поэтому я предполагаю, что у вас одинаковые файлы в обоих путях или на самом деле оба запроса обслуживаются одной и той же конфигурацией vhost. В конфиге для foo.com я бы начал с изменения Allow from all
в Deny from all
:
<Directory /var/www/default/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Deny from all
</Directory>
... у вас гораздо больше шансов получить 403 с этим изменением;)