Cómo crear un host virtual que funciona con http y https?

Mi config es:

Listen 443 http
NameVirtualHost *:80
NameVirtualHost *:443
ServerName *:80

<VirtualHost *:80> 
  [some non-ssl stuff]
  ServerName account.example.com
</VirtualHost>

<VirtualHost *:443> 
  [some non-ssl stuff(directory, docroot)] 
  ServerName account.example.com
  SSLEngine on
  SSLCertificateFile /Users/myusername/certs/server.crt
  SSLCertificateKeyFile /Users/myusername/certs/server.key
</VirtualHost>

Así que no puede acceder a la versión de http de mi sitio, pero la versión ssl está funcionando correctamente. Quiero usar tanto vhosts, http(80) y https(443) para reescribir http a https URL a través de mod_rewrite.

uname -a
Linux 3.4.62-53.42.amzn1.x86_64 GNU/Linux

httpd -v
Server version: Apache/2.2.25 (Unix)

Por favor, ayuda a entender lo que estoy haciendo mal.

Lo que significa que usted no puede tener acceso a los no-ssl versión de su sitio web? Qué significa usted alguna vez el URL que usted reciba otro contenido, tales como el contenido por defecto u otro caso?
Por lo tanto, significa que estoy recibiendo mensaje que dice «Mozilla no se puede establecer conexión con example.com». Sin embargo, he encontrado por netstat que apache escuche solo puerto 443. Si puedo añadir Listen 80 de la directiva, apache no iniciar.
En error_log: Server should be SSL-aware but has no sertificate configured [Hint: SSLCertificateFile] ((null):0)
El problema pertenece a la unión de el puerto 80. Cuando otro proceso ya está a la escucha en el puerto 80 y de iniciar apache también a la escucha en el puerto 80, apache falla durante el tiempo de inicio. Comprobar lo que ya se está ejecutando en el puerto 80 por commnad ‘netstat -nltp’ (ver la Sección tienes que haber iniciado sesión como root). Probablemente otra instancia de apache o nginx o el otro se está ejecutando en el puerto 80.
No, no hay ningún proceso de escucha en el puerto 80. No se inicia debido a que apache dice iniciar sesión: Server should be SSL-aware but has no sertificate configured [Hint: SSLCertificateFile] ((null):0)

OriginalEl autor Clyde | 2013-11-08

1 Kommentar

  1. 10

    Así, mi configuración es:

    Listen 443 http
    Listen 80
    NameVirtualHost *:80
    NameVirtualHost *:443
    ServerName *:80
    
    <VirtualHost *:443> 
      [some non-ssl stuff(directory, docroot)] 
      ServerName account.example.com
      SSLEngine on
      SSLCertificateFile /Users/myusername/certs/server.crt
      SSLCertificateKeyFile /Users/myusername/certs/server.key
    </VirtualHost>
    
    <VirtualHost *:80>
      SSLEngine off
      [other stuff like docroot]
    </VirtualHost>
    

    No está seguro acerca de SSLEngine off, pero ahora funciona. Así, puedo agregar regla de reescritura para redirrect de http a https en http vhost .archivo htaccess:

    #Redirrect from http to https
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    
    en la que conf el archivo que tenemos que cambiar? vhost? ot httpd/ssl?

    OriginalEl autor Clyde

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea