systemadmin.es > LAMP y web > Tests de procesos de selección – parte 1

Tests de procesos de selección – parte 1

En los procesos de selección es normal pasar algún tipo de prueba de selección para verificar que el nivel del candidato se adecua al nivel exigido. Pero, algunas veces las preguntas no son suficientemente claras o no están bien pensadas

La pregunta en cuestión es:

Cuando configuramos VirtualHosts basados en nombre en Apache, que directiva contiene el nombre del VirtualHost que se compara con el “Host:” de la petición del cliente?

Se trata de una pregunta de respuesta única y sus opciones son:

  • UseCanonicalName: La podemos descartar ya que se trata de un booleano que indica cómo debe generar las URLs el apache: En caso que este a On, las genera usando el ServerName del VirtualHost, en caso que este a Off las genera en función del Host header que haya mandado el cliente
  • NameVirtualHost: También la podemos ignorar porque declara una IP (o conjunto) para servir VirtualHosts. A partir de la versión 2.4 ya se suponen todos los VirtualHosts que están basados en nombre y por lo tanto no hace falta declararlo siendo esta directiva ignorada (incluso emitiendo un warning si la usamos).
  • VirtualHost: También la podemos ignorar ya que debemos indicar la IP/puerto (o conjunto)

La dificultad radica en las dos últimas:

  • ServerName: Indica el nombre que identifica al VirtualHost, por ejemplo en Apache 2.2 en la opción -S:
    # /usr/local/apache22/bin/apachectl -S
    VirtualHost configuration:
    wildcard NameVirtualHosts and _default_ servers:
    *:80                   is a NameVirtualHost
             default server qapla.systemadmin.es (/usr/local/apache22/conf/extra/httpd-vhosts.conf:6)
             port 80 namevhost qapla.systemadmin.es (/usr/local/apache22/conf/extra/httpd-vhosts.conf:6)
             port 80 namevhost systemadmin.es (/usr/local/apache22/conf/extra/vhosts/systemadmin.es.conf:9)
    Syntax OK
    

    Y en caso de tener el UseCanonicalName a On, es el valor que toma para generar la URL. De nuevo, a partir de Apache 2.4 no sólo vemos los ServerNames con la opción -S, sino que también vemos los ServerAlias

  • ServerAlias: Se trata de un nombre o conjunto de nombres alternativos que se pueden usar para el VirtualHost. Por ejemplo:
    <VirtualHost *:81>
            ServerName sysadmins.es
            ServerAlias www.sysadmins.es *.otrodominio.com
    
            Redirect 301 / http://systemadmin.es/
    </VirtualHost>
    

Volviendo a la pregunta: que directiva contiene el nombre del VirtualHost que se usa para buscar contra el Host header de la petición?

El nombre del VirtualHost dice la pregunta, por lo que podemos decir que debería ser ServerName tal como hemos dicho antes, pero mirando la otra parte de la pregunta: que se compara con el Host header: Ambas directivas se comparan con el Host header de la petición del cliente. Por lo tanto, ¿es una pregunta mal hecha o es una pregunta demasiado bien hecha?

Al tratarse de respuesta única deberíamos inclinarnos por ServerName porque además nos ceñimos más estrictamente a la pregunta. De todas formas, no me parece una buena pregunta ya que muchos candidatos escogerán “ServerName” porque será la que más les suene pero si se pretendía averiguar si el candidato entendía la diferencia no van a poder separar ambos grupos de candidatos con dicha pregunta.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>