Desative os Hosts Virtuais do Apache para o IP, mas não para os (sub) domínios

1

Eu configurei um domínio e dois subdomínios, com um redirecionamento para a versão https correspondente:

<VirtualHost *:80>
  ServerName domain.com
  Redirect permanent / https://domain.com
</VirtualHost>

<VirtualHost *:80>
  ServerName a.domain.com
  Redirect permanent / https://a.domain.com
</VirtualHost>

<VirtualHost *:80>
  ServerName b.domain.com
  Redirect permanent / https://b.domain.com
</VirtualHost>

Agora, faço alguns testes:

curl http://domain.com/ gives me the redirect to https://domain.com/
curl http://a.domain.com/ gives me the redirect to https://a.domain.com/
curl http://b.domain.com/ gives me the redirect to https://b.domain.com/

Ótimo. Um último teste, apenas usando o IP (a.b.c.d):

curl http://a.b.c.d/ gives me the redirect to https://a.domain.com/

Leva o redirecionamento do domínio a.domain.com .

Há alguma alteração para dissolver HTTP / HTTPS, se o usuário solicitar http://a.b.c.d/ ? No momento, adicionei um redirecionamento ao domínio principal, onde a versão HTTPS tem um certificado auto-assinado (porque é apenas o IP):

<VirtualHost *:80>
  Redirect permanent / https://domain.com
</VirtualHost>

<VirtualHost *:443>
  SSLEngine ON
  SSLCertificateFile /etc/httpd/ssl/apache.crt
  SSLCertificateKeyFile /etc/httpd/ssl/apache.key

  Redirect permanent / https://domain.com
</VirtualHost>
    
por Dennis 27.01.2016 / 15:33

2 respostas

1

Você pode criar um virtualhost padrão sem ServerName e sem redirecionar para qualquer vhost específico. Pelo que entendi, é isso que você quer. O Apache usa como padrão a primeira diretiva VirtualHost se encontrar em seus arquivos de configuração, então seria o suficiente para colocar um vhost ServerName -less em httpd.conf (ou o que quer que seja chamado em seu sistema) diretamente.

    
por 27.01.2016 / 18:09
0

Em um VirtualHost chamado:

<VirtualHost *:80>
  ServerName example.com
  Redirect permanent / https://example.com
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
    SSLEngine On
    ###other directives below
</VirtualHost>

Isso sempre fará com que os usuários redirecionem o link para o link .

Se você quiser que os usuários tenham uma opção para usar HTTP ou HTTPS, tenha as duas configurações disponíveis. Não redirecione.

<VirtualHost *:80>
  ServerName example.com
  ###other directives below
</VirtualHost>

<VirtualHost *:443>
  ServerName example.com
    SSLEngine On
    ###other directives below
</VirtualHost>

Para uma configuração baseada em IP, a configuração acima ainda funcionaria se você estivesse executando apenas um site na porta 80 e um em 443.

<VirtualHost 192.168.1.100:80>
  ###other directives below
</VirtualHost>

<VirtualHost 192.168.1.100:443>
    SSLEngine On
    ###other directives below
</VirtualHost>
    
por 29.01.2016 / 09:31