Pergunta

Qual é a melhor maneira de reescrever de forma transparente uma URL em uma conexão SSL com o Apache 2.2?

O Apache 2 não oferece suporte nativo a vários hosts virtuais baseados em nomes para uma conexão SSL e ouvi dizer que o mod_rewrite pode ajudar com isso.Eu gostaria de fazer algo assim:

Eu configurei o servidor para que os sites possam ser acessados ​​por

https://secure.example.com/dbadmin

mas eu gostaria de ter isso como https://dbadmin.example.com

Como configuro para que a regra Rewrite reescreva dbadmin.example.com para secure.example.com/dbadmin, mas sem exibir a reescrita na barra de endereço do cliente (ou seja,o cliente ainda verá apenas dbadmin.example.com), tudo em https?

Foi útil?

Solução

Configure um único VirtualHost para servir tanto secure.example.com quanto dbadmin.example.com (tornando-o o único *:443 VirtualHost que consegue isso).Você pode então usar mod_rewrite para ajustar o URI para solicitações para dbadmin.example.com:

<VirtualHost *:443>
    ServerName secure.example.com
    ServerAlias dbadmin.example.com

    RewriteEngine on
    RewriteCond %{SERVER_NAME} dbadmin.example.com
    RewriteRule !/dbadmin(.*)$ /dbadmin$1
</VirtualHost>

Seu certificado SSL precisará ser válido para secure.example.com e dbadmin.example.com.Pode ser um certificado curinga mencionado por Terry Lorber, ou você pode usar o assuntoAltName campo para adicionar nomes de host adicionais.

Se você estiver tendo problemas, primeiro configure-o em <VirtualHost *> e verifique se funciona sem SSL.A conexão e o certificado SSL são uma camada separada de complexidade que você pode configurar depois que a reescrita do URI estiver funcionando.

Outras dicas

A menos que o seu certificado SSL seja do tipo "curinga" ou multi-site, não acho que isso funcionará.A reescrita será exibida no navegador e o nome na barra de endereço deve ser válido em relação ao certificado, ou seus usuários verão um erro de segurança (que eles sempre podem aceitar e continuar, mas isso não parece o que você gostaria ).

Mais aqui.

Existe o apaches mod_rewrite, ou você pode configurar o apache para direcionar https://dbadmin.example.com para path/to/example.com/dbadmin no servidor

<VirtualHost *>
ServerName subdomain.domain.com
DocumentRoot /home/httpd/htdocs/subdomain/
</VirtualHost>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top