Apache2 seção condicional com base na porta

3

Eu não sei muito sobre se as instruções na configuração do apache, e eu estou querendo saber se eu posso ter uma seção da configuração aplicada apenas se o pedido for recebido em uma determinada porta.

Em suma, trata-se de SSL. Eu tenho hosts virtuais baseados em nome, posso fazer uma configuração para a porta 80, depois duplicar tudo para a porta 443 e adicionar as configurações SSL relevantes.

Mas isso parece redundante. Eu queria saber se posso ter algo como:

<VirtualHost *:80 *:443>

e depois posso colocar:

<IfModule mod_ssl.c>
    SSLEngine on
SSLCertificateFile ...
SSLCertificateKeyFile ...
SSLCACertificateFile ...
</IfModule>

dentro de uma declaração if que verifica se a conexão está na porta 443 ... ou tal coisa é impossível? o servidor suporta SNI e não tenho preocupações de navegadores não compatíveis com SNI.

    
por Waleed Hamra 28.06.2013 / 11:41

1 resposta

4

Sim, a partir do Apache 2.4, você pode usar

<If "%{HTTPS} == 'on'">
    # HTTPS-specific configuration here
</If>

no seu arquivo de configuração.

Muitas outras expressões dentro do parêntese <If "expression"> também são suportadas, por ex. na verdade, a verificação de uma porta específica, como você sugeriu. Para mais detalhes, consulte os documentos do Apache .

No entanto, lembre-se de que algumas diretivas não funcionarão dentro de uma cláusula <If> . Verifique os contextos permitidos de uma diretiva, em que <If> conta como um contexto directory (como <Directory> ).

    
por 06.04.2017 / 17:54