Utilizando máquinas virtuales

Se pueden utilizar la capacidad de máquinas virtuales de Apache para ejecutar servidores en distintas direcciones IP, diferentes nombres o diferentes puertos en la misma máquina. Si se está interesado en utilizar máquinas virtuales, información completa se da en la documentación de Apache en la máquina en el el web http://www.apache.org/docs/vhosts/.

NotaNótese
 

No se puede usar máquinas virtuales por nombre con Red Hat Linux Apache/SSL Server, porque la negociación de SSL (cuando el cliente acepta el certificado SSL del servidor) ocurre antes de la petición HTTP que identifica a la máquina virtual apropiada por nombre. Si se quieren utilizar máquinas virtuales por nombre, sólo funcionará con servidor no seguro.

Las máquinas virtuales se configuran en httpd.conf, según se describe en la sección de nombre Directivas de configuración en httpd.conf. Por favor léase esa sección antes de empezar a cambiar la configuración de máquinas virtuales del servidor.

Máquina virtual de Red Hat Linux Apache/SSL Server

La configuración por defecto de Red Hat Linux Apache/SSL Server se ejecuta en servidores seguros y no seguros. Ambos servidores usan la misma dirección IP y nombre, pero diferentes puertos, y el servidor seguro es una máquina virtual. Esta configuración permite entregar documentos seguros y no seguros de la manera más eficiente posible. Como ya sabrá las transferencias seguras HTTP llevan más tiempo que las no seguras, ya que se pasa mucha información extra durante las transacciones seguras. Así que utilizar el servidor seguro para tráfico no seguro no es una buena idea.

Las directivas de configuración del servidor seguro están entre etiquetas de máquina virtual en httpd.conf. Si se necesita cambiar la configuración del servidor seguro, habrá que cambiar las directivas dentro de las etiquetas de máquina virtual en httpd.conf. Si se quiere activar ciertas características (por ejemplo, inclusión en el servidor) para el servidor seguro, habrá que activarlas dentro de las etiquetas de máquina virtual que definen el servidor seguro.

El servidor no seguro está configurado como la máquina "no virtual" en httpd.conf. En otras palabras, las opciones configuración del servidor no seguro están fuera de etiquetas de máquina virtual en httpd.conf. Si se quiere cambiar algo del servidor no seguro, habrá que cambiar las directivas de configuración en httpd.conf fuera de las etiquetas de máquina virtual.

Por defecto, los servidores seguro y no seguro comparten el mismo DocumentRoot, directiva de configuración especificada en httpd.conf. En otras palabras, los servidores buscan en el mismo sitio los archivos que proporcionan en respuesta a peticiones. Por defecto, el valor de DocumentRoot es /var/www/html.

Para cambiar DocumentRoot, de tal forma que no sea compartido por el servidor seguro y el no seguro, cámbiese una de las directivas DocumentRoot en httpd.conf. DocumentRoot fuera de las etiquetas de máquina virtual tags define DocumentRoot para el servidor no seguro. DocumentRoot dentro de etiquetas de máquina virtual para el servidor seguro lo define (obviamente) para el servidor seguro.

Si por alguna razón se quiere desactivar el servidor no seguro, se puede. El servidor seguro usa el puerto 443, puerto por defecto para comunicaciones web seguras, mientras que el servidor no seguro usa el puerto 80, puerto por defecto para comunicaciones web. Para evitar que el servidor no seguro acepte conexiones, buscar la línea que dice lo siguiente en httpd.conf:

Port 80

Cambiar la línea para que diga:

Port 443

Descomentar la línea Listen 80, para que en vez de:

Listen 80

Diga:

#Listen 80

Tras estos dos pasos, Red Hat Linux Apache/SSL Server aceptará conexiones en el puerto 443, puerto por defecto de comunicaciones seguras. Sin embargo, el servidor no las aceptará en el puerto 80, puerto por defecto para comunicaciones no seguras, de forma que el servidor no seguro estará desactivado.

Configurando máquinas virtuales

La mayoría usará Red Hat Linux Apache/SSL Server como viene. Es por ello, que usarán la capacidad intrínseca de máquinas virtuales, pero no tocarán las directivas de máquinas virtuales de httpd.conf. Sin embargo, si se quiere usar la capacidad de máquinas virtuales por alguna otra razón, se puede.

Para crear una máquina virtual, habrá que alterar las líneas de máquina virtual, dadas como ejemplo, en httpd.conf, o crear una sección de máquina virtual. (Recuérdese que las máquinas virtuales por nombre no funcionan con el servidor seguro — habrá que utilizar máquinas virtuales por dirección IP si se quiere máquinas virtuales con SSL activo. El servidor no seguro, sin embargo, soporta máquinas virtuales por nombre y por dirección IP.)

Las líneas de ejemplo de máquina virtual son como siguen:

#<VirtualHost ip.address.of.host.some_domain.com>
#    ServerAdmin webmaster@host.some_domain.com
#    DocumentRoot /www/docs/host.some_domain.com
#    ServerName host.some_domain.com
#    ErrorLog logs/host.some_domain.com-error_log
#    CustomLog logs/host.some_domain.com-access_log common
#</VirtualHost>

Descomentar las líneas (elimínise # al comienzo de cada línea). Añádase entonces la información correcta para la máquina y/o máquina virtual a cada línea.

En la primera línea, cámbiese ip.address.of.host.some_domain.com a la dirección IP del servidor. Cámbiese ServerName a un nombre DNS válido para usar para la máquina virtual. (En otras palabras, no basta con inventar algo. Pregúntese al administrador de red si no se sabe como conseguir un nombre de dominio válido.)

También habrá que descomentar líneas NameVirtualHost en httpd.conf:

#NameVirtualHost 12.34.56.78:80
#NameVirtualHost 12.34.56.78

Descoméntese una de las líneas y cámbiese la dirección IP a la dirección (y puerto si es necesario) para esa máquinas virtual.

Muchas otras directivas de configuración pueden ponerse entre etiquetas de máquinas virtual, según se configure la máquina virtual.

Si se configura una máquina virtual para escuchar en un puerto no habitual (80 es el defecto para comunicaciones no seguras; 443 es el defecto para comunicaciones seguras), habrá que configurar una máquina virtual para el puerto y añadir la directiva Listen httpd.conf, correspondiente a ese puerto.

Para tener una a máquina virtual específica para ese puerto, añádase el puerto a la primera línea de la configuración de máquina virtual. La primera línea debería parecerse a lo siguiente:

<VirtualHost ip_address_of_your_server:12331>

Esta línea crearía una máquina virtual en el puerto 12331. Sustitúyase 12331 por el puerto a usar en el ejemplo anterior.

Bajo las líneas Listen de httpd.conf, añádase lo siguiente, que instruye al servidor a escuchar en el puerto 12331:

Listen 12331

Hay que rearrancar el servidor para iniciar una nueva máquina virtual.

Información mucho más completa sobre como crear y configurar máquinas virtuales según nombre y dirección IP se da en la página de web en http://www.apache.org/docs/vhosts/index.html. Véase la página del Grupo Apache sobre máquinas virtuales para tener más detalles sobre el uso de máquinas virtuales.