Cómo instalar Nginx en Debian 11

Introducción

Nginx es un servidor web gratuito y de código abierto que se utiliza para alojar sitios web y aplicaciones de todos los tamaños. El software es conocido por su bajo impacto en los recursos de memoria, su alta escalabilidad y su arquitectura modular basada en eventos que puede ofrecer un rendimiento seguro y predecible. Nginx no es solo un servidor web, sino que también funciona como un equilibrador de carga, un caché HTTP y un proxy inverso.

En esta guía, instalará Nginx en un servidor Debian 11, ajustará la configuración del firewall y aprenderá a administrar algunos procesos de Nginx.

Prerrequisitos

Antes de comenzar con esta guía, debe tener un usuario normal, no root, con privilegios sudo configurados en su servidor. También debe tener un firewall activo. Puede aprender a configurarlo siguiendo nuestra guía de configuración inicial del servidor para Debian 11 .

Si desea completar los últimos pasos de este tutorial, necesitará un nombre de dominio registrado. Para obtener más información sobre cómo configurar un nombre de dominio con DigitalOcean, consulte nuestra introducción a DigitalOcean DNS .

Paso 1 – Instalación de Nginx

Nginx está disponible en los repositorios de software predeterminados de Debian, lo que hace posible instalarlo desde herramientas de gestión de paquetes convencionales.

Primero actualice su índice de paquetes local para reflejar los últimos cambios ascendentes:

  1. sudo apt update

Luego, instala el nginxpaquete:

  1. sudo apt install nginx

Confirme la instalación ingresando Y, luego presione Enterpara continuar. aptluego instalará Nginx y cualquier dependencia requerida en su servidor.

Paso 2 – Ajuste del firewall

Antes de probar Nginx, es necesario modificar la configuración del firewall para permitir el acceso externo a los puertos web predeterminados. Suponiendo que haya seguido las instrucciones de los requisitos previos, debería tener un firewall UFW configurado para restringir el acceso a su servidor.

Durante la instalación, Nginx se registra en UFW para proporcionar algunos perfiles de aplicación que pueden usarse para habilitar o deshabilitar el acceso a Nginx a través del firewall.

Enumere los ufwperfiles de aplicación escribiendo:

  1. sudo ufw app list

Debería obtener una lista de los perfiles de la aplicación:

OutputAvailable applications:...  Nginx Full  Nginx HTTP  Nginx HTTPs  OpenSSH…

De la salida, hay tres perfiles disponibles para Nginx:

  • Nginx Full : este perfil abre tanto el puerto 80(tráfico web normal, sin cifrar) como el puerto 443(tráfico cifrado TLS/SSL)
  • Nginx HTTP : este perfil abre solo el puerto 80(tráfico web normal, sin cifrar)
  • Nginx HTTPS : este perfil abre solo el puerto 443(tráfico cifrado TLS/SSL)

Se recomienda que habilite el perfil más restrictivo que aún permita el tráfico que ha configurado. Dado que aún no ha configurado TLS/SSL para su servidor en esta guía, solo deberá permitir el tráfico para HTTP en el puerto 80.

Puedes habilitar esto escribiendo:

  1. sudo ufw allow 'Nginx HTTP'

Puede verificar el cambio escribiendo:

  1. sudo ufw status

La salida indica qué tráfico HTTP está permitido:

OutputStatus: activeTo                         Action      From--                         ------      ----OpenSSH                    ALLOW       Anywhere                  Nginx HTTP                 ALLOW       Anywhere                  OpenSSH (v6)               ALLOW       Anywhere (v6)             Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Paso 3 – Comprobación del servidor web

Al finalizar el proceso de instalación, Debian 11 inicia Nginx. El servidor web ya debería estar en funcionamiento.

Puede verificar el systemdsistema de inicio para asegurarse de que el servicio se esté ejecutando escribiendo:

  1. systemctl status nginx
Output● nginx.service - A high performance web server and a reverse proxy server     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)     Active: active (running) since Tue 2022-07-12 20:59:20 UTC; 17h ago       Docs: man:nginx(8)   Main PID: 2887 (nginx)      Tasks: 2 (limit: 1132)     Memory: 4.2M        CPU: 81ms     CGroup: /system.slice/nginx.service             ├─2887 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;             └─2890 nginx: worker process

Este resultado revela que el servicio se ha iniciado correctamente. Sin embargo, la mejor forma de comprobarlo es solicitar una página a Nginx.

Puede acceder a la página de inicio predeterminada de Nginx para confirmar que el software se está ejecutando correctamente navegando a la dirección IP de su servidor. Si no conoce la dirección IP de su servidor, puede escribir esto en el símbolo del sistema de su servidor:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

Recibirá algunas líneas. Puede probar cada una en su navegador web para ver si funcionan.

Cuando tenga la dirección IP de su servidor, ingrésela en la barra de direcciones de su navegador:

http://your_server_ip

La página de inicio predeterminada de Nginx debería aparecer en su navegador web:

Esta página se incluye con Nginx para mostrarle que el servidor está funcionando correctamente.

Paso 4 – Gestión del proceso Nginx

Ahora que tiene su servidor web en funcionamiento, puede revisar algunos comandos de administración básicos.

Para detener su servidor web, escriba:

  1. sudo systemctl stop nginx

Para iniciar el servidor web cuando esté detenido, escriba:

  1. sudo systemctl start nginx

Para detener y volver a iniciar el servicio, escriba:

  1. sudo systemctl restart nginx

Si está realizando cambios de configuración, Nginx puede volver a cargarse sin interrumpir las conexiones. Para ello, escriba:

  1. sudo systemctl reload nginx

De forma predeterminada, Nginx está configurado para iniciarse automáticamente cuando se inicia el servidor. Si esto no es lo que desea, puede desactivar este comportamiento escribiendo lo siguiente:

  1. sudo systemctl disable nginx

Para volver a habilitar el servicio para que se inicie durante el arranque, puede escribir:

  1. sudo systemctl enable nginx

Paso 5 – Configuración de bloques de servidor (opcional)

Al utilizar el servidor web Nginx, se pueden utilizar bloques de servidoryour_domain (similares a los hosts virtuales de Apache) para encapsular detalles de configuración y alojar más de un dominio en un solo servidor. Los siguientes ejemplos utilizan , pero debes reemplazarlo con tu nombre de dominio real.

Nginx en Debian 11 tiene un bloque de servidor habilitado de manera predeterminada que está configurado para servir documentos desde un directorio en /var/www/html. Si bien esto funciona bien para un solo sitio, puede volverse inmanejable si está alojando varios sitios. En lugar de modificar /var/www/html, cree una estructura de directorio dentro /var/wwwdel your_domainsitio web y deje /var/www/htmlen su lugar como el directorio predeterminado que se servirá si una solicitud de cliente no coincide con ningún otro sitio.

Cree el directorio de your_domainla siguiente manera, utilizando la -pbandera para crear cualquier directorio padre necesario:

  1. sudo mkdir -p /var/www/your_domain/html

A continuación, asigne la propiedad del directorio con la $USERvariable de entorno, que debe hacer referencia a su usuario actual del sistema:

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

Los permisos de tu raíz web deberían ser correctos si no has modificado su umaskvalor, pero puedes asegurarte escribiendo:

  1. sudo chmod -R 755 /var/www/your_domain

A continuación, cree una index.htmlpágina de muestra utilizando nanosu editor de texto preferido:

  1. nano /var/www/your_domain/html/index.html

Dentro, agregue el siguiente HTML de muestra:

/var/www/tu_dominio/html/index.html

html    head        titleWelcome to your_domain/title    /head    body        h1Success! Your Nginx server is successfully configured for emyour_domain/em. /h1pThis is a sample page./p    /body/html

Guarde y cierre el archivo cuando haya terminado. Para nanoello, presione CTRL + X, luego, Ycuando se le solicite, y luego ENTER.

Para que Nginx sirva este contenido, debe crear un bloque de servidor con las directivas correctas que apunten a su raíz web personalizada. En lugar de modificar directamente el archivo de configuración predeterminado, cree uno nuevo en :/etc/nginx/sites-available/your_domain

  1. sudo nano /etc/nginx/sites-available/your_domain

Agregue el siguiente bloque de configuración, que es similar al predeterminado, pero actualizado para su nuevo directorio y nombre de dominio:

/etc/nginx/sites-available/su_dominio

server {        listen 80;        listen [::]:80;        root /var/www/your_domain/html;        index index.html index.htm index.nginx-debian.html;        server_name your_domain www.your_domain;        location / {                try_files $uri $uri/ =404;        }}

Observe la rootconfiguración actualizada de su nuevo directorio y de server_namesu nombre de dominio. Recuerde reemplazar your_domainaquí con su nombre de dominio actual.

A continuación, habilite este bloque de servidor creando un enlace simbólico a su archivo de configuración personalizado dentro del sites-enableddirectorio que Nginx lee durante el inicio:

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Su servidor ahora tiene dos bloques de servidor habilitados y configurados para responder a solicitudes basadas en sus directivas listeny server_name(puede leer más sobre cómo Nginx procesa estas directivas aquí ):

  • your_domain:Responderá a las solicitudes de your_domainy .www.your_domain
  • default:Responderá a cualquier solicitud en el puerto 80que no coincida con los otros dos bloques.

Para evitar un posible problema de memoria de depósito de hash que puede surgir al agregar nombres de servidores adicionales a su configuración, es necesario ajustar un único valor en el /etc/nginx/nginx.confarchivo. Abra el archivo:

  1. sudo nano /etc/nginx/nginx.conf

Busque la server_names_hash_bucket_sizedirectiva y elimine el #símbolo para descomentar la línea:

/etc/nginx/nginx.conf

...http {    ...    server_names_hash_bucket_size 64;    ...}...

Guarde y cierre el archivo cuando haya terminado.

A continuación, realice una prueba para asegurarse de que no haya errores de sintaxis en ninguno de los archivos Nginx:

  1. sudo nginx -t

Si no hay ningún problema, el siguiente es el resultado:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

Una vez que pase la prueba de configuración, reinicie Nginx para habilitar los cambios:

  1. sudo systemctl restart nginx

Nginx debería ahora servir a tu nombre de dominio. Puedes comprobarlo navegando a . El HTML personalizado que creaste en la carpeta debería aparecer aquí:http://your_domain/var/www/your_domain/html/index.html

Paso 6: Familiarizarse con los archivos y directorios importantes de Nginx

Ahora que sabe cómo administrar el servicio Nginx, puede tomarse un tiempo para familiarizarse con algunos directorios y archivos importantes.

Contenido

  • /var/www/html:El contenido web real, que por defecto solo consta de la página Nginx predeterminada que viste antes, se entrega desde el /var/www/htmldirectorio. Esto se puede cambiar modificando los archivos de configuración de Nginx.

Configuración del servidor

  • /etc/nginx:El directorio de configuración de Nginx. Todos los archivos de configuración de Nginx se encuentran aquí.
  • /etc/nginx/nginx.conf:El archivo de configuración principal de Nginx. Puede modificarse para realizar cambios en la configuración global de Nginx.
  • /etc/nginx/sites-available/: El directorio donde se pueden almacenar los bloques de servidor por sitio. Nginx no utilizará los archivos de configuración que se encuentran en este directorio a menos que estén vinculados al sites-enableddirectorio. Normalmente, toda la configuración de bloques de servidor se realiza en este directorio y luego se habilita mediante el vínculo al otro directorio.
  • /etc/nginx/sites-enabled/: El directorio donde se almacenan los bloques de servidor por sitio habilitados. Por lo general, se crean mediante vínculos a archivos de configuración que se encuentran en el sites-availabledirectorio.
  • /etc/nginx/snippets:Este directorio contiene fragmentos de configuración que se pueden incluir en otras partes de la configuración de Nginx. Los segmentos de configuración que puedan repetirse son buenos candidatos para refactorizarlos en fragmentos.

Registros del servidor

  • /var/log/nginx/access.log:Cada solicitud a su servidor web se registra en este archivo de registro a menos que Nginx esté configurado para hacer lo contrario.
  • /var/log/nginx/error.log:Cualquier error de Nginx se registrará en este registro.

Conclusión

Ahora que tiene instalado su servidor web, tiene muchas opciones para el tipo de contenido que puede servir y las tecnologías que puede utilizar para crear una experiencia más rica para sus usuarios.

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio