Tengo una herramienta que genera bloques de configuración de Apache 2. Me gustaría que lo que genera sea independiente del nombre del servidor real, pero sin necesidad de ejecutar/analizar la configuración de Apache de la máquina de destino.
En otras palabras, lo que necesito es algo como esto:
<VirtualHost *>
ServerName foobar // <-- no top level domain
...
</VirtualHost>
Al leer los documentos, parece que el campo ServerName siempre debe ser el nombre de dominio completo y, por lo tanto, inherentemente no se puede escribir un bloque vhost sin conocer el FQDN del servidor de destino. ¿Es eso cierto o hay alguna solución?
Respuesta1
Sí, ServerName
debe ser una identificación real del servidor, pero también puede ser una dirección IP.
ServerAlias
por otro lado puede contener comodines.
Documentaciónmenciona esto.
Pero también dice que no es necesario.
Si no se especifica ningún nombre de servidor, el servidor intenta deducir el nombre de host visible del cliente preguntando primero al sistema operativo el nombre de host del sistema y, si eso falla, realizando una búsqueda inversa en una dirección IP presente en el sistema.
Respuesta2
ni unServerName
ni unServerAlias
son directivas requeridas en un bloque VirtualHost.
Puedes simplemente omitirlos.
El manual explica cuándo haces eso:
Si no
ServerName
se especifica, el servidor intenta deducir el nombre de host visible del cliente preguntando primero al sistema operativo el nombre de host del sistema y, si eso falla, realizando una búsqueda inversa en una dirección IP presente en el sistema.
que puede ser exactamente lo que necesitas.
Además,en la prácticaesas directivas también aceptarán casi cualquier cadena...
Una sola palabra, como localhost
o test
y example
funcionará, al igual que cosas que se parecen más a FQDN pero que no son nombres DNS que realmente funcionan, como there.is.no.tld.named.serverfault.
Usar algo como eso puede resultar en una advertencia de inicio en el registro de errores (que puede evitar agregando esa cadena a /etc/hosts
) y puede resultar en una situación en la que Apache httd no pueda distinguir su bloque VirtualHost de otros presentes y su configuración no tendrá efecto.https://httpd.apache.org/docs/2.4/vhosts/details.html