Cómo configurar hosts virtuales basados u200bu200ben nombre y basados u200bu200ben IP (bloques de servidor) con NGINX


En un período de tiempo relativamente corto desde que se desarrolló y estuvo disponible (un poco más de 10 años), Nginx ha experimentado un crecimiento sostenido y constante entre los servidores web debido a su alto rendimiento y bajo uso de memoria.

Dado que Nginx es un software gratuito y de código abierto, ha sido adoptado por miles de administradores de servidores web en todo el mundo, no solo en servidores Linux y * nix, sino también en Microsoft Windows.

Para aquellos de nosotros más acostumbrados a Apache, Nginx puede tener una curva de aprendizaje algo empinada (al menos ese fue mi caso), pero ciertamente vale la pena una vez que configura un par de sitios y comienza a ver las estadísticas de tráfico y uso de recursos.

En este artículo, explicaremos cómo usar Nginx para configurar un alojamiento virtual basado en nombre y basado en IP en servidores CentOS/RHEL 7 y Debian 8 y derivados, comenzando con Ubuntu 15.04 y sus derivados.

  1. Operating System: Debian 8 Jessie server [IP 192.168.0.25]
  2. Gateway: Router [IP 192.168.0.1]
  3. Web Server: Nginx 1.6.2-5
  4. Dummy Domains: www.tecmintlovesnginx.com and www.nginxmeanspower.com.

Instalación del servidor web Nginx

Si aún no lo ha hecho, instale Nginx antes de continuar. Si necesita ayuda para comenzar, una búsqueda rápida de nginx en este sitio arrojará varios artículos sobre este tema. Haga clic en el icono de la lupa en la parte superior de esta página y busque la palabra clave nginx. Si no sabe cómo buscar artículos en este sitio, no se preocupe, aquí hemos agregado enlaces a los artículos de nginx, simplemente revise e instálelo según sus respectivas distribuciones de Linux.

  1. Install and Compile Nginx from Sources in RHEL/CentOS 7
  2. Install Nginx Web Server on Debian 8
  3. Install Nginx with MariaDB and PHP/PHP-FPM on Fedora 23
  4. Install Nginx Web Server on Ubuntu 15.10 Server/Desktop
  5. Password Protect Nginx Website Directories

Entonces prepárate para continuar con el resto de este tutorial.

Creación de hosts virtuales basados u200bu200ben nombres en Nginx

Como estoy seguro de que ya sabe, un host virtual es un sitio web que Nginx ofrece en un solo servidor VPS o físico en la nube. Sin embargo, en los documentos de Nginx encontrará el término servidor

El primer paso para configurar hosts virtuales es crear uno o más bloques de servidor (en nuestro caso crearemos dos, uno para cada dominio ficticio) en el archivo de configuración principal (/etc/nginx/nginx.conf) o dentro de/etc/nginx/sites-available.

Aunque el nombre de los archivos de configuración en este directorio (sitios disponibles) se puede configurar como desee, es una buena idea usar el nombre de los dominios y, además, optamos por agregar el .conf extensión para indicar que se trata de archivos de configuración.

Estos bloques de servidor pueden ser relativamente complejos, pero en su forma básica constan del siguiente contenido:

En /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

server {  
    listen       80;  
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
    error_log  /var/www/logs/tecmintlovesnginx.error.log error; 
        root   /var/www/tecmintlovesnginx.com/public_html;  
        index  index.html index.htm;  
}

En /etc/nginx/sites-available/nginxmeanspower.com.conf:

server {  
    listen       80;  
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
    access_log  /var/www/logs/nginxmeanspower.access.log;  
    error_log  /var/www/logs/nginxmeanspower.error.log error;
    root   /var/www/nginxmeanspower.com/public_html;  
    index  index.html index.htm;  
}

Puede usar los bloques anteriores para comenzar a configurar sus hosts virtuales, o puede crear los archivos con el esqueleto básico de/etc/nginx/sites-available/default (Debian) o /etc/nginx/nginx.conf.default ( CentOS).

Una vez copiados, cambie sus permisos y propiedad:

# chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
# chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf
# chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
# chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf
# chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
# chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

Cuando haya terminado, debe eliminar el archivo de muestra o cambiarle el nombre por otro para evitar confusiones o conflictos.

Tenga en cuenta que también deberá crear el directorio para los registros (/var/www/logs ) y proporcionar al usuario de Nginx (nginx o www-data, dependiendo de si está ejecutando CentOS o Debian ) leer y escribir permisos sobre él:

# mkdir /var/www/logs
# chmod -R 660 /var/www/logs
# chgrp <nginx user> /var/www/logs

Los hosts virtuales ahora deben habilitarse creando un enlace simbólico a este archivo en el directorio habilitado para sitios:

# ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
# ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

A continuación, cree un archivo html de muestra llamado index.html dentro de /var/www//public_html para cada uno de los hosts virtuales (reemplace como necesario). Modifique el siguiente código según sea necesario:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Tecmint loves Nginx</title>
  </head>
  <body>
  <h1>Tecmint loves Nginx!</h1>
  </body>
</html>

Finalmente, pruebe la configuración de Nginx e inicie el servidor web. Si hay algún error en la configuración, se le pedirá que lo corrija:

# nginx -t && systemctl start nginx

y agregue las siguientes entradas a su archivo /etc/hosts en su máquina local como una estrategia básica de resolución de nombres:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Luego, inicie un navegador web y vaya a las URL enumeradas anteriormente:

Para agregar más hosts virtuales en Nginx, simplemente repita los pasos descritos anteriormente tantas veces como sea necesario.

Hosts virtuales basados u200bu200ben IP en Nginx

A diferencia de los hosts virtuales basados u200bu200ben nombre, donde todos los hosts son accesibles a través de la misma dirección IP, los hosts virtuales basados u200bu200ben IP requieren una combinación IP: puerto diferente cada uno.

Esto permite que el servidor web devuelva diferentes sitios dependiendo de la dirección IP y el puerto donde se recibe la solicitud. Dado que los hosts virtuales basados u200bu200ben nombre nos brindan la ventaja de compartir una dirección IP y un puerto, son el estándar para servidores web de uso general y deben ser la configuración de elección a menos que su versión instalada de Nginx no sea compatible con la Indicación de nombre de servidor (SNI) , ya sea porque es una versión REALMENTE desactualizada o porque se compiló sin la opción de compilación –with-http_ssl_module.

Si,

# nginx -V

no devuelve las opciones resaltadas a continuación:

deberá actualizar su versión de Nginx o volver a compilarla, según su método de instalación original. Para compilar Nginx, siga el artículo a continuación:

  1. Install and Compile Nginx from Sources in RHEL/CentOS 7

Suponiendo que estamos listos para comenzar, debemos tener en cuenta que otro requisito previo para los hosts virtuales basados u200bu200ben IP es la disponibilidad de IP separadas, ya sea asignándolas a interfaces de red distintas o mediante el uso de IP virtuales (también conocidas como IP aliasing ).

Para realizar el alias de IP en Debian (asumiendo que está usando eth0), edite /etc/network/interfaces de la siguiente manera:

auto eth0:1
iface eth0:1 inet static
        address 192.168.0.25
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
        address 192.168.0.26
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

En el ejemplo anterior, creamos dos NIC virtuales a partir de eth0: eth0: 1 (192.168.0.25) y eth0: 2 (192.168.0.26).

En CentOS, cambie el nombre de/etc/sysconfig/network-scripts/ifcfg-enp0s3 como ifcfg-enp0s3: 1 y haga una copia como ifcfg-enp0s3: 2 , y luego simplemente cambie las siguientes líneas, respectivamente:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

y

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Una vez hecho esto, reinicie el servicio de red:

# systemctl restart networking

A continuación, realice los siguientes cambios en los bloques de servidor previamente definidos en este artículo:

En /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

listen 192.168.0.25:80

En /etc/nginx/sites-available/nginxmeanspower.com.conf:

listen 192.168.0.26:80

Finalmente, reinicie Nginx para que los cambios surtan efecto.

# systemctl restart nginx

y no olvide actualizar su /etc/hosts local en consecuencia:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Por lo tanto, cada solicitud realizada a 192.168.0.25 y 192.168.0.26 en el puerto 80 devolverá tecmintlovesnginx.com y nginxmeanspower.com, respectivamente:

Como puede ver en las imágenes de arriba, ahora tiene dos hosts virtuales basados u200bu200ben IP que utilizan la única NIC en su servidor con dos alias de IP diferentes.

Resumen

En este tutorial, hemos explicado cómo configurar hosts virtuales basados u200bu200ben nombres y basados u200bu200ben IP en Nginx. Aunque probablemente desee utilizar la primera opción, es importante saber que la otra todavía está disponible si la necesita; solo asegúrese de tomar esta decisión después de considerar los hechos descritos en esta guía.

Además, es posible que desee marcar los documentos de Nginx, ya que vale la pena y es bueno consultarlos con frecuencia mientras crea bloques de servidor (ahí lo tiene, estamos hablando en el lenguaje Nginx ahora) y los configura. No creerá todas las opciones disponibles para configurar y ajustar este excelente servidor web.

Como siempre, no dude en escribirnos mediante el formulario a continuación si tiene alguna pregunta o comentario sobre este artículo. Esperamos tener noticias suyas y sus comentarios sobre esta guía son bienvenidos.

Todos los derechos reservados © Linux-Console.net • 2019-2021