Hospedaje virtual Apache: Hosts virtuales basados en IP y basados en nombre en RHEL/CentOS/Fedora


Como todos sabemos, Apache es un servidor web muy potente, altamente flexible y configurable para Nix OS. Aquí, en este tutorial, vamos a discutir una característica más de Apache que nos permite alojar más de un sitio web en una sola máquina Linux. La implementación de alojamiento virtual con el servidor web Apache puede ayudarlo a ahorrar los costos que está invirtiendo en el mantenimiento de su servidor y su administración.

El concepto de alojamiento web compartido y alojamiento web de revendedor se basa únicamente en esta función de Apache.

Hay dos tipos de alojamiento virtual disponibles con Apache.

Con el alojamiento virtual basado en nombres, puede alojar varios dominios/sitios web en una sola máquina con una sola IP. Todos los dominios de ese servidor compartirán una única IP. Es más fácil de configurar que el alojamiento virtual basado en IP, solo necesita configurar el DNS del dominio para mapearlo con su dirección IP correcta y luego configurar Apache para que lo reconozca con los nombres de dominio.

Con el alojamiento virtual basado en IP, puede asignar una IP separada para cada dominio en un solo servidor, estas IP se pueden adjuntar al servidor con tarjetas NIC únicas y también con múltiples NIC.

Configuremos el alojamiento virtual basado en nombres y el alojamiento virtual basado en IP en RHEL, CentOS y Fedora.

  1. SO - CentOS 6.5
  2. Aplicación: servidor web Apache
  3. Dirección IP: 192.168.0.100
  4. Dirección IP: 192.168.0.101
  5. Dominio: www.example1.com
  6. Dominio: www.example2.com

Cómo configurar hosts virtuales Apache basados en IP y basados en nombre

Antes de configurar el alojamiento virtual con Apache, su sistema debe tener instalado el software Apache Web. si no, instálelo usando el instalador de paquetes predeterminado llamado yum.

[[email protected] ~]# yum install httpd

Pero, antes de crear un host virtual, debe crear un directorio donde guardará todos los archivos de su sitio web. Por lo tanto, cree directorios para estos dos hosts virtuales en la carpeta/var/www/html. Recuerde que/var/www/html será su raíz de documentos predeterminada en la configuración virtual de Apache.

[[email protected] ~]# mkdir /var/www/html/example1.com/
[[email protected] ~]# mkdir /var/www/html/example2.com/

Para configurar el alojamiento virtual basado en nombres, debe indicarle a Apache qué IP utilizará para recibir las solicitudes de Apache para todos los sitios web o nombres de dominio. Podemos hacer esto con la directiva NameVirtualHost. Abra el archivo de configuración principal de Apache con el editor de VI.

[[email protected] ~]# vi /etc/httpd/conf/httpd.conf

Busque NameVirtualHost y elimine el comentario de esta línea quitando el signo # delante de ella.

NameVirtualHost

A continuación, agregue la IP con la posible en la que desea recibir las solicitudes de Apache. Después de los cambios, su archivo debería verse así:

NameVirtualHost 192.168.0.100:80

Ahora es el momento de configurar las secciones de host virtual para sus dominios, vaya al final del archivo presionando Shift + G. Aquí, en este ejemplo, estamos configurando secciones de host virtual para dos dominios

  1. www.example1.com
  2. www.example2.com

Agregue las siguientes dos directivas virtuales al final del archivo. Guarde y cierre el archivo.

<VirtualHost 192.168.0.100:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example1.com
    ServerName www.example1.com
ErrorLog logs/www.example1.com-error_log
CustomLog logs/www.example1.com-access_log common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example2.com
    ServerName www.example2.com
ErrorLog logs/www.example2.com-error_log
CustomLog logs/www.example2.com-access_log common
</VirtualHost>

Puede agregar tantas directivas como desee en la sección de host virtual de sus dominios. Cuando haya terminado con los cambios en el archivo httpd.conf, verifique la sintaxis de los archivos con el siguiente comando.

[[email protected] ~]# httpd -t

Syntax OK

Se recomienda verificar la sintaxis del archivo después de realizar algunos cambios y antes de reiniciar el servidor web porque si alguna sintaxis sale mal, Apache se negará a trabajar con algunos errores y eventualmente afectará a que su servidor web existente se caiga por un tiempo. Si la sintaxis es correcta. Reinicie su servidor web y agréguelo a chkconfig para que su servidor web se inicie en el nivel de ejecución 3 y 5 solo en el momento del arranque.

[[email protected] ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
[[email protected] ~]# chkconfig --level 35 httpd on

Ahora es el momento de crear una página de prueba llamada index.html y agregar algo de contenido al archivo para que tengamos algo para verificarlo, cuando la IP llame al host virtual.

[[email protected] ~]# vi /var/www/html/example1.com/index.html
<html>
  <head>
    <title>www.example1.com</title>
  </head>
  <body>
    <h1>Hello, Welcome to www.example1.com.</h1>
  </body>
</html>
[[email protected] ~]# vi /var/www/html/example2.com/index.html
<html>
  <head>
    <title>www.example2.com</title>
  </head>
  <body>
    <h1>Hello, Welcome to www.example2.com.</h1>
  </body>
</html>

Una vez que haya terminado, puede probar la configuración accediendo a ambos dominios en un navegador.

http://www.example1.com
http://www.example2.com

Para configurar el alojamiento virtual basado en IP, debe tener más de una dirección IP/puerto asignado a su servidor o su máquina Linux.

Puede estar en una sola tarjeta NIC, por ejemplo: eth0: 1, eth0: 2, eth0: 3… etc. También se pueden conectar varias tarjetas NIC. Si no sabe cómo crear varias direcciones IP en una sola NIC, siga la guía a continuación, que lo ayudará a crear.

  1. Cree varias direcciones IP en una sola interfaz de red

El propósito de implementar un alojamiento virtual basado en IP es asignar la implementación para cada dominio y esa IP en particular no será utilizada por ningún otro dominio.

Este tipo de configuración se requiere cuando un sitio web se ejecuta con certificado SSL (mod_ssl) o en diferentes puertos e IP. Y también puede ejecutar varias instancias de Apache en una sola máquina. Para verificar las IP adjuntas en su servidor, verifíquelas usando el comando ifconfig.

[email protected] ~]# ifconfig
 
eth0      Link encap:Ethernet  HWaddr 08:00:27:4C:EB:CE  
          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe4c:ebce/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17550 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15120 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:16565983 (15.7 MiB)  TX bytes:2409604 (2.2 MiB)

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:4C:EB:CE  
          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1775 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1775 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3416104 (3.2 MiB)  TX bytes:3416104 (3.2 MiB)

Como puede ver en el resultado anterior, dos IP 192.168.0.100 (eth0) y 192.168.0.101 (eth0: 1) están conectadas al servidor, ambas IP están asignadas al mismo dispositivo de red físico (eth0).

Ahora, asigne una IP/Puerto específico para recibir solicitudes http, simplemente puede hacerlo cambiando la directiva Listen en el archivo httpd.conf.

[[email protected] ~]# vi /etc/httpd/conf/httpd.conf

Busque la palabra "Escuchar", encontrará una sección donde está escrita la descripción breve sobre la directiva Escuchar. En esa sección, comente la línea original y escriba su propia directiva debajo de esa línea.

# Listen 80

Listen 192.168.0.100:80

Ahora, cree secciones de host virtual para ambos dominios. Vaya al final del archivo y agregue las siguientes directivas virtuales.

<VirtualHost 192.168.0.100:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example1
    ServerName www.example1.com
ErrorLog logs/www.example1.com-error_log
TransferLog logs/www.example1.com-access_log
</VirtualHost>

<VirtualHost 192.168.0.101:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example2
    ServerName www.example2.com
ErrorLog logs/www.example2.com-error_log
TransferLog logs/www.example2.com-access_log
</VirtualHost>

Ahora, dado que ha modificado el archivo principal de configuración de Apache, debe reiniciar el servicio http como se muestra a continuación.

[[email protected] ~]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

Pruebe su configuración de alojamiento virtual basado en IP accediendo a las URL en el navegador web como se muestra a continuación.

http://www.example1.com
http://www.example2.com

Eso es todo con el host virtual Apache de hoy. Si está buscando proteger y fortalecer su configuración de Apache, entonces lea nuestro artículo de guías.

  1. 13 consejos de seguridad y refuerzo del servidor web Apache

Enlaces de referencia

Documentación de Apache Virtual Host

Volveré con algunos otros consejos y trucos de Apache en mis artículos futuros, hasta entonces Stay Geeky y conectado a Tecmint.com. No olvide dejar sus sugerencias sobre el artículo en nuestra sección de comentarios a continuación.