Declarando múltiples puertos para los mismos VirtualHosts


35

Declare múltiples puertos para los mismos VirtualHosts:

SSLStrictSNIVHostCheck off
# Apache setup which will listen for and accept SSL connections on port 443.
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443

<VirtualHost *:443>
  ServerName domain.localhost
  DocumentRoot "/Users/<my_user_name>/Sites/domain/public"
  <Directory "/Users/<my_user_name>/Sites/domain/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  ...
</VirtualHost>

¿Cómo puedo declarar un nuevo puerto ('listen', ServerName, ...) para 'domain.localhost'?

Si agrego el siguiente código, apache funciona (demasiado) también para todos los demás subdominios de 'domain.localhost' (subdominio1.domain.localhost, subdominio2.domain.localhost, ...):

<VirtualHost *:80>
  ServerName pjtmain.localhost:80
  DocumentRoot "/Users/Toto85/Sites/pjtmain/public"
  RackEnv development
  <Directory "/Users/Toto85/Sites/pjtmain/public">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

3
Solo para tener en cuenta. No puede unir host virtual https y no https en uno. <VirtualHost *: 80 *: 443>. 80 No se puede tener "SSLEngine activado". Debe tener 2 declaraciones VirtualHost separadas para SSL y no SSL.
Gacek

Respuestas:


63

La pregunta es algo ambigua, pero intentaré ayudar.

Si desea que el mismo host virtual escuche en varios puertos, haga esto:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

<VirtualHost *:80 *:8080>
  ServerName some.domain.name
  ServerAlias some.other.domain.name
  ....
</VirtualHost>

En términos generales, no define múltiples VirtualHosts basados ​​en nombres del mismo nombre de dominio, a menos que necesite usar un protocolo diferente.

Para los hosts virtuales basados ​​en nombres SSL, debe tener mucho cuidado: por definición, no puede haber múltiples certificados en la misma IP: puerto, por lo tanto, para evitar errores de certificado, debería ser un certificado de tarjeta de crédito, que cubra todos los nombres de dominio servidos.


2
+1 pero alguna pequeña corrección: los certificados SSL no están vinculados a direcciones IP sino a nombres comunes (CN) que deben ser iguales al nombre del host . También con la extensión SNI es posible tener múltiples hosts virtuales con diferentes certificados en la misma dirección IP. ( en.wikipedia.org/wiki/Server_Name_Indication )
Daniel Rikowski

3
+1 también, para SSL debería ser <VirtualHost *: 80 *: 443>
fedmich
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.