Среда
Ubuntu 16.04 / Apache 2.4.18
проблема
Одна из моих настроек Apache соответствует каждому запросу, независимо от того, совпадает ли ServerName. Даже разные домены совпадают, а не только субдомены. Как определить исправление, почему этот конфиг совпадает со всем?
подробности
У меня есть две активные конфигурации, 000-default
и config для одного из моих доменов.
Проблема в том, что если я включаю конфигурацию для этого одного домена, эта конфигурация обрабатывает все запросы, независимо от того, использую ли я поддельный поддомен или даже совершенно другой домен , настроенный для указания IP-адреса этого сервера.
Чтобы было ясно, у меня еще нет конфигурации для этого другого домена, поэтому он не должен ничего совпадать.
Кажется, что конфигурации загружаются в правильном порядке, поэтому значение по умолчанию 000 должно быть конфигурацией по умолчанию для несовпадающих запросов.
конфигурация
# 000-default.conf
NameVirtualHost *
<VirtualHost *>
ServerName default
ServerSignature Off
Redirect 404 /
</VirtualHost>
,
# example-com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
ServerSignature Off
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]
</VirtualHost>
Поскольку мой другой домен не совпадает с первым RewriteCond
, он просто возвращает пустые 200. Поэтому, вероятно, нет необходимости обращать внимание на тот факт, что ничто не обслуживает этот маршрут HTTPS:
# curl -I http://example.com
HTTP/1.1 302 Found <== This is good, that redirects as expected
$ curl -I http://fake.example.com
HTTP/1.1 200 OK <== That's bad, it hit the example.com config, failed the RewriteCond, and just returned a blank 200
$ curl -I http://other-domain.com
HTTP/1.1 200 OK <== Also bad, same reason as above
Apache, кажется, загружает вещи в правильном порядке:
# apache2ctl -S
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/000-default.conf:1
VirtualHost configuration:
*:* default (/etc/apache2/sites-enabled/000-default.conf:3)
*:80 example.com (/etc/apache2/sites-enabled/example-com.conf:1)
При таком порядке загрузки 000-default
должен обрабатывать несоответствующие сайты, но это не так. Кто-нибудь может увидеть сделку с моим конфигом, которая вызывает это?