Como configurar um site http e um site https no servidor single-ip no Apache?

0

Eu quero criar um site http: http://example1.com e um site https: https://example2.com usando a seguinte configuração:

Listen 80
Listen 443
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
    ServerName example1.com
    DocumentRoot /var/www/example1.com/public_html
</VirtualHost>

<VirtualHost *:443>
    ServerName example2.com
    DocumentRoot /var/www/example2.com/public_html
    SSLCertificateFile...
    SSLCertificateKeyFile...
    SSLEngine On
</VirtualHost>

No entanto, se eu visitar https://example1.com , Sou redirecionado para https://example2.com . Se eu visitar http://example2.com , Sou redirecionado para http://example1.com . Isso não é o que eu quero. eu gostaria https://example1.com e http://example2.com não existe de todo. Como eu devo fazer?

peter
fonte

Respostas:

3

Você vai tem que definir mais dois blocos VirtualHost. Se o Apache não puder encontrar um VirtualHost correspondente para esse nome, ele usará o primeiro VirtualHost pertencente à porta.

Claro, você não precisa servir o mesmo site:

  • Você pode exibir uma página de erro, como uma página genérica 404 não encontrado . Isso vai incomodar as pessoas.
  • Para example2.com, você pode usar um RewriteRule para redirecionar todos os visitantes HTTP para HTTPS.
  • Para example1.com... bem, eu realmente não entendo porque você não serviria via HTTPS?

No entanto, você não pode fazer com que o navegador informe que o domínio não existe, porque ainda é o mesmo domínio, independentemente de como ele é acessado.

grawity
fonte
Considerei usar mais dois blocos do VirtualHost e servir a versão http / https do site que não quero com o 404 Not Found. Mas acho que isso não seria bom para o SEO. Usando RewriteRule é um método viável, mas um pouco complexo. O que eu quero é: quando visitar example1.com ou example2.com , é como se o apache não tivesse sido iniciado ou o site nunca estivesse configurado no servidor.
peter
1
Você pode usar as regras de redirecionamento que são mais simples que o RewiteRules, ou até mesmo fazer com que o seu aplicativo cuide disso em muitos casos.
davidgo
@ Peter: "o apache não foi iniciado" é impossível. Você está acessando o mesmo endereço IP, a mesma porta - você obterá os mesmos resultados. O nome do host é conhecido apenas depois de O Apache aceita e recebe o pedido!
grawity
@ Peter: Quanto ao "bom SEO", os redirecionamentos são bons, mas se recusar a usar o HTTPS realmente não favorece o seu site.
grawity
@grawity, Imagine que você só configure um site https em seu servidor (um host virtual, ouça apenas na porta 443), os mecanismos de busca nunca percebem a existência da versão http do site. Eu acho que esse é o melhor caminho para o SEO. Embora o redirecionamento não prejudique o SEO em teoria, sinto que não é muito natural.
peter