Ambiente
Ubuntu 16.04 / Apache 2.4.18
Problema
Uma das configurações do Apache é a correspondência de todas as solicitações , independentemente de o ServerName corresponder. Até mesmo domínios diferentes estão combinando, não apenas subdomínios. Como faço para determinar uma correção para o porquê dessa configuração estar combinando tudo?
Detalhes
Eu tenho duas configurações ativas, 000-default
e uma configuração para um dos meus domínios.
O problema é que, se eu ativar a configuração para esse domínio, essa configuração manipula solicitações all , não importando se estou usando um subdomínio falso ou até mesmo um domínio completamente diferente que está configurado para apontar para o IP do servidor.
Para ser claro, ainda não tenho uma configuração para esse outro domínio, por isso não deve corresponder a nada.
Configs parecem ser carregados na ordem correta, então o 000-default 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 apenas um espaço em branco de 200. Então, provavelmente, não há necessidade de prestar atenção ao fato de que nada está atendendo a essa 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 as coisas na ordem correta:
# 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 estar manipulando sites não correspondentes, mas não é. Alguém pode ver o negócio com a minha configuração que está causando isso?