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-default
e 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?
fonte
Respostas:
Eu sugeriria analisar três coisas em relação ao arquivo de configuração padrão 000:
A linha 2.4.x do Apache não requer a diretiva NameVirtualHost (e, de fato, está obsoleta), portanto, eu a removia.
Eu substituiria
<VirtualHost *>
por<VirtualHost *:80>
. A maioria das configurações que eu vejo tem essa sintaxe mesmo para o padrão 000. Não ter esse formato pode interferir com o host usado para solicitações.Você deve desativar (a2dissite) e reativar (a2ensite) o arquivo de configuração padrão 000 para garantir que ele esteja realmente ativado (não se esqueça de reiniciar o Apache também).
fonte