A configuração padrão do Apache não está correspondendo a solicitações não correspondidas

1

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?

    
por cedmans 06.08.2017 / 05:42

1 resposta

0

Gostaria de sugerir três coisas em relação ao arquivo de configuração 000:

  • A linha 2.4.x do Apache não requer a diretiva NameVirtualHost (e, na verdade, é obsoleta), portanto, eu removerei isso.

  • Eu substitui <VirtualHost *> por <VirtualHost *:80> . A maioria das configurações que vejo tem essa sintaxe, mesmo para o padrão 000. Não ter este formato pode interferir com o host sendo usado para solicitações.

  • Você deve desabilitar (a2dissite) e reativar (a2ensite) o arquivo de configuração 000 para ter certeza de que está realmente ativado (não se esqueça de reiniciar o Apache também).

por 07.08.2017 / 05:42