Configure o Apache para servir múltiplos subdomínios via HTTP + HTTPS

3

Eu tenho um servidor virtual hospedado no ISP com 2 endereços IPv4 públicos. Eu quero executar vários subdomínios (mais de 2) com o Apache e servi-los via HTTP e HTTPS. O certificado SSL é um curinga para * .mydomain.com.

Eu tentei configurar o Apache no Debian dessa maneira, mas falhei. Meus hosts virtuais não são aceitos ou recebo erros de SSL. (Eu sei que o Apache não vê o nome do host solicitado antes de servir o certificado, mas o certificado inclui todos os subdomínios possíveis)

Por favor, ajude a criar um httpd.conf que funcione melhor com o layout de configuração Apache do Debian.

Todos os detalhes:

  • Apache ouvindo *: 80 para HTTP e *: 443 para HTTPS
  • Todos os NameVirtualHosts, aliases etc. devem ser definidos para as duas portas / protocolos de uma só vez
  • padrão mydomain.com e www.mydomain.com devem ser direcionados para / var / www
  • NameVirtualHosts adicionais para foo.mydomain.com e bar.mydomain.com etc., que podem ser configurados especialmente, por ex. ter outro DocumentRoot
por Apache User 03.02.2011 / 18:58

1 resposta

4

O Apache pode ver o nome do host solicitado, usando Indicação do nome do servidor TLS .

No entanto, isso requer um navegador da Web relativamente recente. Por exemplo, aqueles que usam o Internet Explorer no Windows XP receberão mensagens de incompatibilidade de certificado para domínios adicionais. (Felizmente, os usuários do WinXP / IE estão quase extintos). O artigo da Wikipedia tem uma lista, e aqui está uma página de teste se você não tiver certeza.

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www
    <Directory /var/www/>
        Options Indexes FollowSymlinks MultiViews
    </Directory>
</VirtualHost>

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www
    <Directory /var/www/>
        Options Indexes FollowSymlinks MultiViews
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/example.com.pem
</VirtualHost>

Outros (sub) domínios:

<VirtualHost *:80>
    ServerName foo.example.com
    DocumentRoot /sites/foo
</VirtualHost>

<VirtualHost *:443>
    ServerName foo.example.com
    DocumentRoot /sites/foo

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/foo.example.com.pem
</VirtualHost>
    
por 03.02.2011 / 20:09