GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear un host virtual Nginx (bloque de servidor)

Los bloques de servidor, a menudo denominados hosts virtuales en Nginx, le permiten alojar varios sitios web en un servidor. Aquí se explica cómo usarlos.

Índice

  • ¿Qué es un host virtual?
  • ¿Cómo funciona el host virtual?
  • Cómo crear hosts virtuales Nginx (bloques de servidor)
    • 1. Creación de la estructura del directorio
    • 2. Creación de páginas de prueba para cada sitio web
    • 3. Crear host virtual Nginx (bloques de servidor)
    • 4. Habilitar hosts virtuales Nginx (bloques de servidor)
    • 5. Prueba de los hosts virtuales (opcional)
    • 6. Deshabilitar hosts virtuales Nginx (bloques de servidor)
  • Conclusión

Nginx está diseñado para manejar múltiples dominios en un solo servidor y dirección IP. En otras palabras, si tiene un solo servidor que se usa como servidor web y tiene asignada una sola dirección IP, entonces para tener más de un sitio web o dominio ejecutándose en el servidor, usa hosts virtuales Nginx.

Antes de comenzar este tutorial, deberá instalar Nginx. Para saber cómo instalarlo, lea nuestra excelente guía sobre la instalación del servidor web Nginx en Linux.

¿Qué es un servidor virtual?

Si no está seguro de qué es un host virtual, déjeme explicarlo. Es un término del servidor HTTP de Apache; sin embargo, también es comúnmente utilizado por los usuarios de Nginx. El término adecuado para Nginx es bloqueo de servidor. .

Un host virtual es un método para alojar varios nombres de dominio en un solo servidor.

¿Cómo funciona el host virtual?

Cuando inicia un software de servidor web como Nginx en un servidor, ese servidor web se vinculará a uno o más puertos de red. Por lo general, para un servidor web, serán los puertos 80 y 443.

Cuando una computadora va a visitar un sitio web, enviará una solicitud a través de Internet al servidor, y el servidor recibirá esa solicitud. Entonces, lo primero que hará el servidor es mirar el puerto en el que se envió la solicitud al puerto de destino.

A continuación, utilizará ese puerto de destino para determinar a qué aplicación reenviar esa información. Eso significa que su servidor web solo puede tener una aplicación que reciba las solicitudes.

Pero, ¿qué sucede si desea alojar dos sitios web diferentes en el mismo servidor web? El servidor necesita saber cuándo llega un paquete solicitando el sitio web. Luego, necesita saber qué sitio web se está solicitando para saber qué información devolver.

No importa qué sitio web se solicite, el servidor no puede usar el número de puerto solo el puerto de destino para determinar a qué sitio web intenta acceder un cliente. Todo lo que el servidor va a hacer es decir:"Voy a enviar esta solicitud a Nginx". A partir de ahí, Nginx tiene que decidir qué devolver.

Nginx tiene un concepto llamado bloques de servidor . Los bloques del servidor se pueden usar para dos cosas diferentes.

Se pueden usar para servir a otros sitios web según la dirección IP solicitada, o se pueden usar para servir a diferentes sitios web según el nombre de dominio utilizado .

Entonces, cuando escribe el nombre del sitio web como www.example.com y cuando el servidor lo recibe, Nginx puede mirar dentro de los encabezados HTTP qué nombre de servidor se solicitó y desde allí, según sus hosts virtuales configurados, para hacer una decisión sobre qué directorio almacena los archivos del sitio web y devolver la respuesta correcta al cliente en función del nombre del servidor.

Cómo crear hosts virtuales Nginx (bloques de servidor)

Hay dos directorios en los que podemos crear y almacenar nuestros archivos de configuración de host virtual. Ambos están ubicados dentro de /etc/nginx directorio. Los nombres de esos dos directorios son sites-available y sites-enabled .

  • /etc/nginx/sites-available :El directorio donde se definen los hosts virtuales individuales (sitios web). Recuerde que Nginx no usará los archivos de configuración que se encuentran en este directorio a menos que estén vinculados al /etc/nginx/sites-enabled directorio.
  • /etc/nginx/sites-enabled :Lista de hosts virtuales (sitios web) que Nginx sirve activamente.

¿Probablemente se pregunte por qué necesitamos dos directorios para almacenar nuestros archivos de host virtual? El principal beneficio de esto es que podemos crear muchos archivos de hosts virtuales en nuestro servidor Nginx, pero podemos habilitarlos según nuestros requisitos.

Crearemos archivos de host virtual para alojar múltiples sitios con múltiples dominios en nuestro servidor Nginx. Los nombres de dominio son website1.comsitioweb2.com .

1. Creación de la estructura del directorio

Lo primero que debemos hacer es crear un directorio para cada host virtual para almacenar los diferentes contenidos del sitio web. Colocaremos los directorios en /var/www , y los nombraremos después de cada nombre de dominio.

Ejecute los siguientes comandos para crear los directorios:

sudo mkdir -p /var/www/website1.com
sudo mkdir -p /var/www/website2.com

El -p bandera en el comando anterior le dice a mkdir para crear los directorios principales necesarios.

2. Creación de páginas de prueba para cada sitio web

A continuación, con fines de demostración, creemos un index.html archivo dentro del directorio raíz del documento del dominio para que tengamos algo que mostrar.

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

Pegue las siguientes líneas:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 1!</title>
    </head>
    <body>
        <h1>Welcome to Website 1!</h1>
    </body>
</html>

Ahora repita el paso anterior para website2.com.

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

Pegue las siguientes líneas:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 2!</title>
    </head>
    <body>
        <h1>Welcome to Website 2!</h1>
    </body>
</html>

3. Crear host virtual Nginx (bloques de servidor)

Para crear un archivo de host virtual Nginx dentro de los sites-available directorio, ejecute el siguiente comando:

sudo vim /etc/nginx/sites-available/website1.com

Es importante tener en cuenta que el archivo de configuración del host virtual de Nginx puede tener el nombre que desee, pero, por lo general, es una buena práctica usar el nombre de dominio.

Ahora, pegue el siguiente contenido en su archivo de host virtual:

server {
    listen 80;
    server_name website1.com www.website1.com;
    root /var/www/website1.com;

    access_log /var/log/nginx/website1-access.log;
    error_log /var/log/nginx/website1-error.log;
}

Para hacer las cosas más transparentes, analicemos esta sintaxis. Primero, esto es lo que significa cada parámetro:

  • listen :especifique en qué puerto el servidor Nginx escuchará las conexiones.
  • server_name :Aquí, hacemos coincidir las solicitudes de nuestro dominio. La directiva contiene una lista de nombres de dominio que queremos usar para acceder a nuestro sitio.
  • root : La ubicación del directorio en el que hemos almacenado los archivos de nuestro sitio web.
  • error_log :ruta completa al archivo de registro en el que almacenamos todos los registros de errores de este host virtual.
  • access_log :ruta completa al archivo de registro en el que almacenamos todos los registros de acceso de este host virtual.

Ahora podemos usar nuestra configuración de host virtual inicial como base para nuestro segundo archivo. Simplemente cópielo para crear un nuevo archivo:

sudo cp /etc/nginx/sites-available/website1.com /etc/nginx/sites-available/website2.com

Abra el nuevo archivo y ajústelo para que coincida con nuestro segundo (website2.com ) nombre de dominio:

sudo vim /etc/nginx/sites-available/website2.com
server {
    listen 80;
    server_name website2.com www.website2.com;
    root /var/www/website2.com;

    access_log /var/log/nginx/website2-access.log;
    error_log /var/log/nginx/website2-error.log;
}

4. Habilitar hosts virtuales Nginx (bloques de servidor)

Lo último que debemos hacer antes de probar habilita los hosts virtuales. Podemos hacer esto creando un enlace simbólico desde el archivo al sites-enabled directorio:

sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/

Como puede ver en la imagen a continuación, estos archivos ahora están vinculados a los sites-enabled directorio.

Antes de continuar, verifiquemos dos veces que no haya errores tipográficos. Pruebe la configuración de Nginx para comprobar la sintaxis correcta:

sudo nginx -t

Y finalmente, si no se encontraron problemas, reinicie el servicio Nginx para aplicar los cambios:

sudo systemctl restart nginx

5. Prueba de los hosts virtuales (opcional)

Para probar los hosts virtuales de Nginx, primero debemos apuntar nuestros registros de nombre de dominio a la dirección IP del servidor. En nuestro caso, la dirección IP del servidor es 192.168.122.101 .

Si está en Linux, abra el /etc/hosts archivo en su PC de escritorio (aquella desde la cual realizará la prueba) usando el siguiente comando:

sudo vim /etc/hosts

Y agregue los nombres de dominio virtuales uno por uno, como se muestra a continuación.

Guarde y cierre el archivo cuando haya terminado. De esta manera nos permitirá probar dominios que no son de nuestra propiedad.

Ahora abra su navegador e ingrese www.website1.com y www.website2.com uno a uno. Verá las páginas de índice de ambos dominios, respectivamente.

Ha configurado correctamente dos dominios independientes con Nginx.

6. Deshabilitar hosts virtuales Nginx (bloques de servidor)

Para deshabilitar un host virtual en Nginx, debemos eliminar el enlace simbólico que habíamos creado al habilitar el archivo de host virtual. Por ejemplo, para deshabilitar website2.com , tenemos que ejecutar el siguiente comando:

sudo rm -rf /etc/nginx/sites-enabled/website2.com

Para aplicar los cambios, tenemos que reiniciar el servidor Nginx:

sudo systemctl restart nginx

Conclusión

Este artículo le muestra cómo crear hosts virtuales Nginx (bloques de servidor) y alojar múltiples dominios en un solo servidor Linux. Para crear un host virtual para otro dominio, repita los mismos pasos. Pero, por supuesto, Nginx puede hacer mucho más.

Además, si desea saber cómo proteger su sitio web con un certificado SSL gratuito, le recomiendo que consulte nuestra guía Let's Encrypt:obtenga un certificado SSL gratuito con Certbot.

Para obtener más información sobre cómo configurar un servidor Nginx, puede consultar la documentación oficial de Nginx.

¡Gracias por leer! Espero que el artículo le haya resultado útil y que haya podido configurar los hosts virtuales. Siéntase libre de dejar un comentario si tiene alguna pregunta.


Linux
  1. Cómo configurar el host virtual Nginx (bloques de servidor) en CentOS 7

  2. Cómo redirigir HTTP a HTTPS en Nginx

  3. Cómo crear una copia de seguridad

  4. ¿Cómo crear una salida virtual en Pulseaudio?

  5. Host virtual Nginx:bloque de servidor Nginx

Cómo instalar Nginx en Debian 7

Cómo instalar Nginx en Fedora 22

Cómo instalar HHVM (HipHop Virtual Machine) en Ubuntu 20.04 usando Nginx

Cómo instalar NGINX en Ubuntu 20.04

Cómo instalar Nginx en CentOS 7

Cómo configurar NGINX en un servidor CentOS 7