Posso definire HTTP e HTTPS nello stesso VirtualHost in Apache conf?

Ho una grande definizione di VirtualHost che non voglio duplicare in modo che il sito verrà eseguito anche su HTTPS.

Ecco cosa voglio fare:

  • Come evitare l'errore di verifica del certificato lftp?
  • Due siti web con SSL su NGINX. Sequenza e reindirizzamento
  • Rendere Apache in grado di scrivere in file PHP con PHP in esecuzione come DSO?
  • Cosa succede quando un certificato SSL viene annullato?
  • Installare le estensioni php su ubuntu
  • Dovresti modificare / eliminare il configuration del sito apache predefinito?
  • <VirtualHost *> ServerName example.com <If port=443> SSLEngine on SSLCertificateFile ... SSLCertificateKeyFile ... SSLCertificateChainFile ... </If> (other config) </VirtualHost> 

    C'è qualche modo per farlo?
    Sono mancante un altro metodo per non duplicare la configuration?

  • Host virtuali e collegamenti simbolici, perché non posso impostare DocumentRoot in un collegamento simbolico?
  • Applicare l'intervallo di intestazione di correzione a apache 2.0.59 rilasciare CVE-2011-3192
  • Effetti collaterali di un evento Apache2 Reload
  • Apache HSTS exception per alcuni host virtuali
  • Ereditare la properties; di file su Linux
  • C'è un modo per creare una copia-su-scrittura di una directory?
  • 3 Solutions collect form web for “Posso definire HTTP e HTTPS nello stesso VirtualHost in Apache conf?”

    L'attuale versione stabile di Apache (2.2) non ha questa funzionalità, ma la 2.4 ha la direttiva IF .

    È necessario creare due VirtualHosts per ora, ma è ansible impostare alcune cose attraverso le variables globali di ambiente o apache e utilizzarlo nella configuration di virtualhost (impostando ad esempio il documentoroot). In questo modo, se si desidera modificare, è ansible farlo con una sola modifica.

    Naturalmente, puoi includere anche per fare qualcosa di simile:

     <VirtualHost *:80> include /etc/apache2/vhost.conf.d/site1 </VirtualHost> <VirtualHost *:443> include /etc/apache2/vhost.conf.d/site1 include /etc/apache2/vhost.conf.d/site1-ssl </VirtualHost> 

    ps: SNI sarà mainstream anni prima dell'adattamento IPv6. Tutto il browser principale lo support già assumendo che tu sia in un sistema operativo supportto.

    edit: come fooquency notato non puoi mettere SSLEngine su un block If quindi la mia risposta è sbagliata.

    No. È ansible spostare la maggior parte delle cose alla configuration globale e ereditarla nel VirtualHost.

    Per gli host virtuali SSL, è necessario utilizzare una seconda port ala

     <VirtualHost *:443> ServerName abc.com </VirtualHost> <VirtualHost *:4443> Servername def.com </VirtualHost> 

    o è necessario utilizzare IP separati

     <VirtualHost 192.168.0.1:443> ServerName abc.com </VirtualHost> <VirtualHost 192.168.0.2:443> Servername def.com </VirtualHost> 

    C'è un'ottima spiegazione nei documenti Apache SSL http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html

    Cerca in basso per "Perché non posso utilizzare SSL con host virtuali basati su nomi / non IP"?

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.