Manejo predeterminado para dominios/subdominios no coincidentes en Apache

Manejo predeterminado para dominios/subdominios no coincidentes en Apache

Tengo una configuración de Apache2 con múltiples VirtualHosts. Mi DNS está configurado para aceptar *.<domain>.<tld>en múltiples dominios. Todo funciona correctamente, pero si voy a, something-random-here.example.comparece que se selecciona un VirtualHost no válido (supongo que es el primero o el último que encuentra). ¿Hay alguna manera de decirle a Apache que use ciertas reglas si ninguna de las entradas de VirtualHost coincide con el dominio o subdominio? Preferiblemente me gustaría devolver un 404.

Respuesta1

Apache usa el primer host virtual si ningún nombre coincide. Simplemente configure un nuevo host virtual como el primero con un nombre aleatorio, mostrando lo que quiera o devolviendo una página 404.

Respuesta2

El comodín incluye los archivos de configuración de su sitio:

Include path/to/site/confs/*httpd.conf

Organice los archivos de configuración de su sitio para que se carguen en el orden esperado. Ejemplo...

01-httpd.conf

02-sitio1-httpd.conf

03-sitio2-httpd.conf

etc...

Apache los leerá en orden. Luego cree uno que siempre se cargue en último lugar para detectar cualquier host virtual no coincidente y devolver un 404 en lugar de cargar un sitio predeterminado.

99-catchall-httpd.conf

<VirtualHost *:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost *:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

Asegúrese de reemplazar los puertos con cualquier puerto en el que escuche su httpd. O si tienes httpd escuchando en interfaces específicas, necesitarás agregar un comodín para cada interfaz, así:

<VirtualHost 192.168.1.101:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.101:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

Espero que esto ayude. Utilizo este método para cargar sitios en el orden que especifico y evito que hosts virtuales no coincidentes carguen un sitio inesperado sin querer.

Respuesta3

Como Moritz Bothse menciona, Apache2 utilizará el primer host virtual que encuentre si no coincide con ninguno de los que haya solicitado.

Cuando instalas Apache2 por primera vez, hay una configuración de sitio web predeterminada que puedes usar como plantilla, modificar o eliminar, y siempre me preguntaba para qué servía realmente 000-default.conf, porque también tenían un default.conf. Después de leer lo Moritz Bothdicho, ahora todo tiene más sentido.

Lo que hice para mi servidor fue copiar la configuración del nombre de host predeterminado (sitio web) al archivo 000-default.conf y a2ensite 000-default.

Ahora, cada vez que hay una solicitud de dominio no coincidente para mi sitio web, muestra la página predeterminada 000, que es solo una copia de mi página predeterminada real.

información relacionada