A configuração padrão do Apache não corresponde a solicitações sem correspondência


1

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?


Não sei se isso consertará nada além de três sugestões sobre o padrão 000 ... Primeiro, a linha 2.4.x do Apache não requer a diretiva NameVirtualHost (e é, de fato, obsoleta). Segundo, eu substituiria o <VirtualHost *> por <VirtualHost *: 80>. A maioria das configurações que eu vejo tem essa sintaxe mesmo para o padrão 000. Terceiro, convém desativar (a2dissite) e reativar (a2ensite) 000-default, independentemente para garantir que ele esteja realmente ativado (não se esqueça de reiniciar o Apache obviamente).
Anaksunaman 06/08/19

Bem, o que você disse é exatamente o que corrigiu. Provavelmente especificando essa porta. Eu admito que meu Apache-fu é fraco, então agradeço muito por sua ajuda.
cedmans

Sim, minha suspeita é a porta também. De qualquer forma, de nada. Ainda bem que está consertado. :-)
Anaksunaman

Respostas:


0

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).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.