Середовище
Ubuntu 16.04 / Apache 2.4.18
Проблема
Один з моїх конфігурацій Apache відповідає кожному запиту, незалежно від того, чи відповідає ім’я ServerName. Навіть різні домени збігаються, а не лише субдомени. Як визначити виправлення, чому цей конфігурація відповідає всім?
Деталі
У мене є дві активні конфігурації 000-default
та конфігурація для одного з моїх доменів.
Проблема полягає в тому, що якщо я ввімкнув конфігурацію для цього одного домену, він конфігурує всі запити, незалежно від того, чи використовую я підроблений субдомен або навіть зовсім інший домен, який налаштований вказувати на 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
слід обробляти невідповідні сайти, але це не так. Чи може хтось бачити угоду з моїм конфігурацією, що викликає це?