Конфигурация поддомена с использованием apache2 и виртуальных хостов

Я настраиваю веб-страницу на сервере, на котором работает Ubuntu 12.04.

Я деактивировал сайты по умолчанию ( a2dissite default default-ssl ) и создал новый, тот, который мне нужен и работает, который будет субдоменом.

Представьте, что у меня есть foo.com. Моя цель состоит в том, чтобы foo.com выдавал ошибку http 403, а 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 здесь...

Что я делаю не так?


person ThisIsErico    schedule 02.03.2013    source источник


Ответы (1)


Вы включили NamedVirtualHosts в своей конфигурации Apache? Выдает ли Apache какие-либо предупреждения при перезапуске? Все ли сайты включены?

У них настроены разные DocumentRoots, поэтому я предполагаю, что у вас есть одни и те же файлы в обоих путях или фактически оба запроса обслуживаются одной и той же конфигурацией виртуального хоста. В конфигурации для 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 с этим изменением;)

person bryn    schedule 19.11.2013