Búsqueda de sitios web

Cree hosts virtuales basados en IP y basados en nombres de Apache en Linux


Hosting virtual es un concepto en el que varios sitios web o dominios se alojan en un único servidor, lo que se hace para reducir la sobrecarga de recursos y los costos de funcionamiento de una empresa u organización.

El servidor web Apache simplifica el alojamiento de múltiples sitios al permitir a los administradores del sistema configurar fácilmente hosts virtuales para cada sitio web. El alojamiento virtual puede estar basado en IP o en nombres.

En este tutorial, exploramos cómo configurar alojamiento virtual en distribuciones basadas en RHEL como Fedora, CentOS Stream, Rocky Linux y Alma Linux utilizando hosts virtuales basados en IP y basados en nombres en Linux.

Los conceptos de Hosting web compartido y Hosting web de revendedor se basan principalmente en esta característica de Apache.

Tipos de alojamiento virtual Apache en Linux

Hay dos tipos de Hosting virtual disponibles con Apache.

Alojamiento virtual basado en nombres

En este tipo de hosting se pueden alojar varios dominios o sitios web en un único servidor utilizando una única dirección IP. En pocas palabras, todos los dominios compartirán una única dirección IP. Este es el tipo de alojamiento virtual más fácil de configurar, ya que todo lo que necesita hacer es asignar los nombres de dominio a la dirección IP y luego configurar los hosts virtuales Apache para cada uno de los nombres de dominio.

Alojamiento virtual basado en IP

El alojamiento virtual basado en IP es donde a cada dominio se le asigna una dirección IP única. Estas direcciones IP se pueden conectar al servidor mediante varias tarjetas NIC o una sola tarjeta NIC.

Entorno de prueba

  • SOFedora 34
  • AplicaciónServidor web Apache
  • Dirección IP192.168.2.105
  • Dirección IP192.168.2.106
  • Dominiowww.midominio1.com
  • Dominiowww.midominio2.com

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

Antes de comenzar, asegúrese de que el servidor web Apache esté instalado en su sistema usando el comando dnf como se muestra.

sudo dnf install httpd -y

Configurar alojamiento virtual basado en nombres

El primer paso para configurar un alojamiento virtual basado en nombres es configurar la resolución del nombre de dominio en el archivo /etc/hosts. Por lo tanto, ejecute los siguientes comandos como usuario root para agregar las entradas del nombre de dominio que apunten a la dirección IP del host.

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.105 www.mydomain2.com' >> /etc/hosts

El siguiente paso es crear un directorio que contendrá los archivos del sitio web. Por lo tanto, crearemos dos directorios para los hosts virtuales en la raíz del documento, que es la carpeta /var/www/html en la configuración de Apache.

sudo mkdir /var/www/html/mydomain1.com/
sudo mkdir /var/www/html/mydomain2.com/

El siguiente paso es modificar el archivo de host virtual que le indicará a Apache que la IP escuche las solicitudes entrantes del servidor web Apache para todos los nombres de dominio. Por lo tanto, abra el archivo de configuración de Apache usando su editor de texto preferido.

sudo vim /etc/httpd/conf/httpd.conf

Agregue los siguientes bloques de código para los dos hosts virtuales.

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.105:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

Guarde los cambios y salga. A continuación, compruebe si la sintaxis es correcta y que no hay errores.

httpd -t

A continuación, crearemos páginas de prueba HTML para cada uno de los dominios y agregaremos contenido como una forma de confirmar si todo funciona correctamente desde el navegador.

Para midominio1.com

Cree un archivo index.html en el directorio midominio1.com.

sudo vim /var/www/html/mydomain1.com/index.html 

Pegue las siguientes líneas.

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain1.com.</h1>
  </body>
</html>

Guarde los cambios y salga del archivo.

Para midominio2.com

Cree un archivo index.html en el directorio midominio2.com.

sudo vim /var/www/html/mydomain2.com/index.html 

Pegue las siguientes líneas.

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain2.com.</h1>
  </body>
</html>

Guarde los cambios y salga del archivo.

Ahora inicie el servidor web Apache y confirme que se esté ejecutando.

sudo systemctl start httpd
sudo systemctl status httpd

Si tienes un firewall habilitado, permite el tráfico HTTP y HTTPS (cuando sea necesario).

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --add-service=https --zone=public --permanent
sudo firewall-cmd --reload

Ahora prueba los dominios desde un navegador.

Configurar alojamiento virtual basado en IP Linux

El alojamiento virtual basado en IP, como su nombre indica, implica múltiples direcciones IP asignadas a su servidor Linux. En la mayoría de los casos, se conectan dos o más tarjetas NIC a su sistema para proporcionar múltiples direcciones IP.

El objetivo del alojamiento virtual basado en IP es asignar cada dominio a una dirección IP única que no será utilizada por ningún otro dominio.

Esto es ideal para situaciones en las que tienes sitios web cifrados con un certificado SSL (mod_ssl) o ejecutándose en diferentes puertos. En nuestra configuración, tenemos dos adaptadores NIC.

Para ver la configuración de IP en su sistema, ejecute el comando ifconfig o ip a.

ifconfig
OR
ip addr

Nuestro servidor tiene dos direcciones IP, cada una asignada a una NIC. La IP 192.168.2.106 está asignada a ens160 y 192.168.2.105 está asignada a ens224.

Una vez más, configuremos el archivo httpd.conf.

sudo vim /etc/httpd/conf/httpd.conf

Cree hosts virtuales para ambos dominios como se muestra. Asegúrese de que cada dirección IP esté asignada a su respectiva configuración de host virtual.

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.106:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

Guarde y salga del archivo de configuración. A continuación, modifique el archivo /etc/hosts como se muestra.

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.106 www.mydomain2.com'>> /etc/hosts

Confirmar las entradas:

cat /etc/hosts

192.168.2.105 www.mydomain1.com
192.168.2.106 www.mydomain2.com

A continuación, reinicie el servidor web Apache para que los cambios entren en vigor.

sudo systemctl restart httpd

Finalmente, pruebe su configuración de alojamiento virtual basada en IP accediendo a las URL como se muestra.

http://192.168.2.105
http://192.168.2.106

¡Esta prueba confirma que el alojamiento virtual basado en IP está funcionando tal como se esperaba!

Conclusión

Y eso es todo por esta conferencia. Esperamos que puedas configurar ambos tipos de alojamiento virtual sin problemas. Se agradecen mucho sus comentarios sobre esta guía.