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

Apache2 VirtualHosts 403 Странность

Я уверен, что это то, что я уже должен понять, но я запутался.

Конфиги в игре складываются в это:

NameVirtualHost *:80
Listen 80

<VirtualHost *:80>
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin admin@domain.tld
    ServerName domain.tld
    ServerAlias *.domain.tld
    DocumentRoot /var/www/domain.tld
    <Directory /var/www/domain.tld>
        Options -Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

DNS работает правильно.

Проблема в том, что каждый вариант http: //*.domain.tld/ (включая http: //domain.tld/) работает правильно, кроме http: //www.domain.tld/ который бросает 403.

Состояние журналов: клиент отклонен конфигурацией сервера: / etc / apache2 / htdocs

Если я удалю первый блок VirtualHost из игры, все будет работать должным образом, включая http: //www.domain.tld. Это наводит меня на мысль, что по какой-то причине Apache не рассматривает www.domain.tld для соответствия второму блоку VirtualHost и, таким образом, отказывается все отрицать.

Это кажется неправильным. Разве второй блок не должен соответствовать www.domain.tld?


Мне удалось решить эту проблему, но я до сих пор не понимаю, почему. В моих исходных конфигурациях я использовал реальный IP-адрес сервера вместо *. Переключение всех экземпляров на *, как показано выше, заставило все работать должным образом.

Связано ли это с тем, как браузеры запрашивают ресурсы?

Я бы избегал подстановочного знака для www запись.

Измените это:

ServerName domain.tld

ServerAlias *.domain.tld

К этому:

ServerName www.domain.tld

ServerAlias domain.tld subdomain.domain.tld etc.domain.tld

чтобы посмотреть, работает ли это. вызов имени сервера www.domain.tld для тестирования подстановочного знака, чтобы увидеть, вызывает ли он проблемы.