Meio Ambiente
Ubuntu 16.04 / Apache 2.4.18
Problema
Uma das minhas configurações do Apache corresponde a todas as solicitações, independentemente de o ServerName corresponder. Até domínios diferentes são correspondentes, não apenas subdomínios. Como determino uma correção para o motivo de esta configuração corresponder a tudo?
Detalhes
Eu tenho duas configurações ativas 000-defaulte uma configuração para um dos meus domínios.
O problema é que, se eu habilitar a configuração para esse domínio, essa configuração manipulará todas as solicitações, independentemente de eu estar usando um subdomínio falso ou mesmo um domínio completamente diferente que esteja configurado para apontar para o IP desse servidor.
Para ser claro, ainda não tenho uma configuração para esse outro domínio, portanto não deve corresponder a nada.
As configurações parecem ser carregadas na ordem correta; portanto, o 000-padrão deve ser a configuração padrão para solicitações não correspondentes.
Configuração
# 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>
Como meu outro domínio não corresponde ao primeiro RewriteCond, ele retorna um 200 em branco. Portanto, provavelmente não há necessidade de prestar atenção ao fato de que nada está servindo nessa rota 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
O Apache parece estar carregando coisas na ordem certa:
# 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)
Com essa ordem de carregamento, 000-default deve- se lidar com sites não correspondentes, mas não é. Alguém pode ver o acordo com a minha configuração que está causando isso?