Setting Up IP and Port Based Virtualhost Apache

Configuración de Apache Virtualhost basado en IP y puerto

El alojamiento virtual es un método para alojar múltiples sitios web en un solo servidor. Hay dos tipos de alojamiento virtual: alojamiento virtual basado en nombres y alojamiento virtual basado en IP. El alojamiento virtual basado en IP es una técnica para aplicar diferentes directivas según la dirección IP y el puerto en el que se recibe una solicitud. Puede asignar una IP separada para cada dominio en un solo servidor utilizando alojamiento virtual basado en IP. En su mayoría, esto se usa para alojar diferentes sitios web en diferentes puertos o IP.

Aquí vamos a alojar “www.ipvhost1.com” en la IP “192.168.1.227”, “www.ipvhost2.com” en la IP “192.168.1.228” y “www.portvhost.com” en la IP “192.168.1.228” con puerto 8080.

Requisitos

  • SO: Servidor Ubuntu 14.04 con Apache instalado
  • Dirección IP1: 192.168.1.227
  • Dirección IP2: 192.168.1.228
  • Dominio: www.ipvhost1.com
  • Dominio: www.ipvhost2.com
  • Dominio: www.portvhost.com

Cree múltiples direcciones IP en una sola interfaz de red

Para configurar el alojamiento virtual basado en IP, debe tener más de una dirección IP asignada a su máquina Linux. La configuración de varias direcciones IP en una sola interfaz de red se denomina alias de IP. El alias de IP es muy útil si solo tiene una tarjeta de interfaz de red.

Para hacer esto, debe editar el archivo «/etc/network/interfaces».

sudo nano /etc/network/interfaces

Agregue las siguientes líneas:

auto eth0
iface eth0 inet static
address 192.168.1.227
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
 
auto eth0:1
iface eth0:1 inet static
address 192.168.1.228
netmask 255.255.255.0

Guarde y cierre el archivo, luego reinicie el servicio de red para que estos cambios surtan efecto.

sudo  /etc/init.d/networking restart
sudo ifup eth0:1

Configurar varias instancias de Apache

De forma predeterminada, Apache escucha en el puerto 80. Para el alojamiento virtual basado en puertos, debe indicarle a Apache que escuche la IP «192.168.1.227» y «192.168.1.228» en el puerto 80 y la IP «192.168.1.228» en el puerto 8080.

Para configurar varios puertos, debe editar «/etc/apache2/ports.conf».

sudo nano /etc/apache2/ports.conf

Agregue la siguiente línea:

Listen 192.168.1.227:80
Listen 192.168.1.228:80
Listen 192.168.1.228:8080

Guarde y cierre el archivo, luego reinicie Apache para que estos cambios surtan efecto.

sudo /etc/init.d/apache2 restart

Crear directorios virtuales

Primero, debe crear una estructura de directorios que contenga las páginas web. Este directorio se conoce como DocumentRoot para el dominio.

Cree tres directorios para los sitios web «www.ipvhost1.com», «www.ipvhost2.com» y «www.portvhost.com» en el directorio DocumentRoot predeterminado de Apache.

sudo mkdir -p /var/www/html/www.ipvhost1.com
sudo mkdir -p /var/www/html/www.ipvhost2.com
sudo mkdir -p /var/www/html/www.portvhost.com

Cree páginas web de prueba para cada host virtual

Cree un archivo «index.html» para cada sitio web que identifique IP y puertos específicos.

Cree un archivo index.html para el host virtual «www.ipvhost1.com».

sudo nano  /var/www/html/www.ipvhost1.com/index.html

Agrega el siguiente contenido.

<html>
<head>
<title>www.ipvhost1.com</title>
</head>
<body>
<h1>The ipvhost1.com ip virtual host is working!</h1>
</body>
</html>

Guarde y cierre el archivo cuando haya terminado.

Cree un archivo «index.html» para el host virtual «www.ipvhost2.com».

sudo nano  /var/www/html/www.ipvhost2.com/index.html

Agrega el siguiente contenido.

<html>
<head>
<title>www.ipvhost2.com</title>
</head>
<body>
<h1>The ipvhost2.com ip virtual host is working!</h1>
</body>
</html>

Guarde y cierre el archivo cuando haya terminado.

Cree un archivo «index.html» para el host virtual «www.portvhost.com».

sudo nano  /var/www/html/www.portvhost.com/index.html

Agrega el siguiente contenido.

<html>
<head>
<title>www.portvhost.com</title>
</head>
<body>
<h1>The portvhost.com port virtual host is working!</h1>
</body>
</html>

Guarde y cierre el archivo cuando haya terminado.

Configuración de propiedad y permisos

De forma predeterminada, el servicio Apache se ejecuta como un usuario de «www-data» en Ubuntu. Debe cambiar la propiedad de estos tres directorios virtuales a «www-data» para que Apache pueda leer y escribir datos.

Para hacer esto, ejecute:

sudo chown -R www-data:www-data /var/www/html/www.ipvhost1.com
sudo chown -R www-data:www-data /var/www/html/www.ipvhost2.com
sudo chown -R www-data:www-data /var/www/html/www.portvhost.com

Además, debe asegurarse de que el directorio raíz web de Apache (/var/www/html) sea legible para que todos puedan leer archivos de él.

sudo chmod -R 755 /var/www/html

Crear archivos de host virtual

De forma predeterminada, Apache viene con un archivo de host virtual predeterminado llamado «000-default.conf». Primero debe deshabilitar este archivo de host virtual.

Para hacer esto, ejecute el siguiente comando.

sudo a2dissite 000-default.conf

El siguiente paso es crear un archivo de configuración de host virtual para cada sitio web. El nombre de cada archivo de configuración debe terminar en “.conf”.

Cree un archivo de host virtual para el sitio web «www.ipvhost1.com».

sudo nano /etc/apache2/sites-available/www.ipvhost1.com.conf

Agrega el siguiente contenido.

<VirtualHost 192.168.1.227:80>
 
ServerAdmin admin@ipvhost1.com
ServerName  www.ipvhost1.com
DocumentRoot /var/www/html/www.ipvhost1.com
 
ErrorLog ${APACHE_LOG_DIR}/www.ipvhost1.com_error.log
CustomLog ${APACHE_LOG_DIR}/www.ipvhost1.com_access.log combined
 
</VirtualHost>

Guarde y cierre el archivo.

Cree un archivo de host virtual para el sitio web «www.ipvhost2.com».

sudo nano /etc/apache2/sites-available/www.ipvhost2.com.conf

Agrega el siguiente contenido.

<VirtualHost 192.168.1.228:80>
 
ServerAdmin admin@ipvhost2.com
ServerName  www.ipvhost2.com
DocumentRoot /var/www/html/www.ipvhost2.com
 
ErrorLog ${APACHE_LOG_DIR}/www.ipvhost2.com_error.log
CustomLog ${APACHE_LOG_DIR}/www.ipvhost2.com_access.log combined
 
</VirtualHost>

Guarde y cierre el archivo.

Cree un archivo de host virtual para el sitio web «www.portvhost.com».

sudo nano /etc/apache2/sites-available/www.portvhost.com.conf

Agrega el siguiente contenido.

<VirtualHost 192.168.1.228:8080>
 
ServerAdmin admin@portvhost.com
ServerName  www.portvhost.com
DocumentRoot /var/www/html/www.portvhost.com
 
ErrorLog ${APACHE_LOG_DIR}/www.portvhost.com_error.log
CustomLog ${APACHE_LOG_DIR}/www.portvhost.com_access.log combined
 
</VirtualHost>

Guarde y cierre el archivo.

Después de crear los archivos de host virtual, debe habilitar los hosts virtuales.

Puedes hacer esto ejecutando.

sudo a2ensite www.ipvhost1.com.conf
sudo a2ensite www.ipvhost2.com.conf
sudo a2ensite www.portvhost.com.conf

Finalmente, reinicie el servicio Apache.

sudo /etc/init.d/apache2 restart

Prueba de hosts virtuales

Ahora es el momento de probar IP Virtualhost. En una computadora, abra su navegador web y navegue a las URL «https://192.168.1.227:80» y «https://192.168.1.228:80». Debería ver páginas de demostración de muestra para alojamiento virtual basado en IP que se ven así:

apache_ipvhost1

apache_ipvhost2

De manera similar, para probar Port Virtualhost, abra su navegador web y navegue a la URL «https://192.168.1.228:8080». Debería ver una página de demostración de muestra para el alojamiento virtual basado en puertos que se ve así:

apache_portvhost

Conclusión

En esta publicación, mostré el procedimiento paso a paso para crear y habilitar un host virtual basado en IP y puerto en el servidor web Apache. Puede configurar fácilmente muchos dominios en el mismo servidor.

Experto Geek - Tu Guía en Tendencias Tecnológicas