Tenho vários domínios ( example1.com
, example2.com
, ...
) hospedados no mesmo IP. Um desses domínios ( example3.com
) possui um certificado SSL e quero servi-lo por HTTPS, mantendo todos os outros sites em HTTP. Eu tenho isso configurado e funcionando corretamente, até agora.
Meu problema é que as solicitações para https://www.example1.com
(observe os s) estão sendo tratadas pela seção de configuração do apache para example3.com
(que começa <VirtualHost *:443>
), o que causa problemas, pois este é um site Django e, entre outras coisas, gera um 400 Bad Request devido a example1.com
não estar em Configuração do Django ALLOWED_HOSTS
.
Entendo que a natureza do SSL significa que o Host:
cabeçalho não é conhecido até que a conexão segura seja estabelecida. Mas existe uma maneira de fazer com que o apache rejeite quaisquer solicitações por HTTPS que não sejam para example3.com
?
Eu esperava o uso da ServerName
diretiva dentro do SSL Virtualhost para restringir essa seção apenas ao host nomeado, mas após uma inspeção mais detalhada dos documentos , parece que é apenas o caso de hosts virtuais baseados em nome.
Editar: tentei adicionar um padrão abrangente como a primeira seção, como o seguinte:
<VirtualHost *:443>
ServerName default.only
<Location />
Require all denied
</Location>
</VirtualHost>
Isso causa o seguinte erro:
[Thu Dec 04 10:31:27.922801 2014] [mpm_event:notice] [pid 10498:tid 3074255488] AH00491: caught SIGTERM, shutting down
[Thu Dec 04 10:31:29.928483 2014] [ssl:emerg] [pid 30518:tid 3074300544] AH02240: Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] ((null):0)
[Thu Dec 04 10:31:29.928551 2014] [ssl:emerg] [pid 30518:tid 3074300544] AH02312: Fatal error initialising mod_ssl, exiting.