¿Cuál es la diferencia entre *: 80 y _default_: 80 en Apache2?

8

Estoy tratando de entender la diferencia entre los siguientes dos términos:

*:80
_default_:80

en el archivo de configuración de Apache. La documentación aquí no está clara para mí, y la única conversación de la lista de correo que pude encontrar aquí tampoco arroja ninguna luz (comprensible, para mí) sobre el asunto.

Tengo un montón de hosts virtuales basados ​​en nombres declarados así:

<VirtualHost *:80>
    ServerName example.com
    ...

y me gustaría tener una entrada que se active cuando ninguno de esos coincide, es decir, cuando llega una solicitud sin un nombre de host virtual o con un nombre de host virtual que no se ha declarado. ¿Debo usar *:80o _default_:80?

Johannes Ernst
fuente
En Apache, puede tener un sitio web en un solo número de IP, o puede tener otro modelo, puede alojar múltiples sitios web en el mismo número de IP y dominio diferente configurado como VirtualHost y escuchar en el mismo puerto 80.
Andrew Smith

Respuestas:

9

Creo que _default_se usa para definir un vhost predeterminado en una configuración de host virtual basada en IP. Está utilizando un alojamiento virtual basado en nombres, por lo que esta declaración en la documentación

Un vhost predeterminado nunca atiende una solicitud que se envió a una dirección / puerto que se utiliza para vhosts basados ​​en nombres.

se vuelve relevante.

En una configuración de host virtual basada en nombre, el primer vhost definido es el vhost predeterminado y se servirá si no se encuentra otra coincidencia, por lo que podría hacer algo simple como

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName sub.example.com
    DocumentRoot /var/www/sub.example.com
</VirtualHost>

Haría lo que quisiera y serviría todo, excepto example.com y sub.example.com de forma predeterminada.

usuario9517
fuente