Configure o Apache para servir vários subdomínios via HTTP + HTTPS

Configure o Apache para servir vários subdomínios via HTTP + HTTPS

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

Tentei configurar o Apache no Debian desta forma, 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 escutando em *:80 para HTTP e *:443 para HTTPS
  • Todos os NameVirtualHosts, aliases etc. devem ser definidos para ambas as portas/protocolos ao mesmo tempo
  • padrão mydomain.com e www.mydomain.com devem fazer root em /var/www
  • NameVirtualHosts adicionais para foo.mydomain.com e bar.mydomain.com etc. que podem ser configurados especialmente, por exemplo, para ter outro DocumentRoot

Responder1

Apachepodeveja o nome do host solicitado, usandoIndicação do nome do servidor TLS.

No entanto, isso requer um navegador relativamente recente. Por exemplo, aqueles que usam o Internet Explorer no Windows XP receberão mensagens de incompatibilidade de certificados para domínios adicionais. (Felizmente, os usuários do WinXP/IE estão quase extintos.)Artigo da Wikipédiatem uma lista eaqui está uma página de testese 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>

(Sub)domínios adicionais:

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

informação relacionada