¿Hay alguna manera de definir un host virtual Apache 2 con un nombre de servidor parcial?

¿Hay alguna manera de definir un host virtual Apache 2 con un nombre de servidor parcial?

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í, ServerNamedebe ser una identificación real del servidor, pero también puede ser una dirección IP. ServerAliaspor 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 unServerNameni unServerAliasson directivas requeridas en un bloque VirtualHost.

Puedes simplemente omitirlos.

El manual explica cuándo haces eso:

Si no ServerNamese 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 localhosto testy examplefuncionará, 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

información relacionada