Cómo instalar Nginx en Debian 10

Introducción

Nginx es un servidor web gratuito y de código abierto utilizado 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 y orientada a eventos que puede ofrecer un rendimiento seguro y predecible. Más que simplemente un servidor web, Nginx también funciona como un balanceador de carga, una caché HTTP y un proxy inverso.

En esta guía, instalarás Nginx en tu servidor Debian 10.

Prerrequisitos

Antes de comenzar esta guía, debes tener un usuario regular, no root, con privilegios sudo configurado en tu servidor. También debes tener un firewall activo. Puedes aprender cómo configurarlo siguiendo nuestra guía de configuración inicial del servidor para Debian 10.

Paso 1: Instalar Nginx

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

Primero actualiza tu índice de paquetes local para reflejar los últimos cambios del origen:

  1. sudo apt update

Luego, instala el paquete nginx:

  1. sudo apt install nginx

Confirma la instalación ingresando Y, luego presiona Enter para proceder. apt luego instalará Nginx y cualquier dependencia requerida en tu servidor.

Paso 2 – Ajustar el 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 seguiste las instrucciones en los requisitos previos, deberías tener configurado un firewall UFW para restringir el acceso a tu servidor.

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

Enumera los perfiles de aplicación de ufw escribiendo:

  1. sudo ufw app list

Deberías obtener un listado de los perfiles de aplicación:

Output
Available applications: ... Nginx Full Nginx HTTP Nginx HTTPS ...

Como puedes ver, hay tres perfiles disponibles para Nginx:

  • Nginx Full: Este perfil abre tanto el puerto 80 (tráfico web normal, no encriptado) como el puerto 443 (tráfico encriptado TLS/SSL)
  • Nginx HTTP: Este perfil abre solo el puerto 80 (tráfico web normal, no encriptado)
  • Nginx HTTPS: Este perfil abre solo el puerto 443 (tráfico encriptado TLS/SSL)

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

Puedes habilitarlo escribiendo:

  1. sudo ufw allow 'Nginx HTTP'

Puedes verificar el cambio escribiendo:

  1. sudo ufw status

Lo que aparece son el tráfico HTTP permitido en la salida:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Paso 3 – Comprobando tu Servidor Web

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

Puedes comprobar con el sistema de inicio systemd para asegurarte de que el servicio está en funcionamiento 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-06-28 18:42:58 UTC; 49s ago Docs: man:nginx(8) Main PID: 2729 (nginx) Tasks: 2 (limit: 1167) Memory: 7.2M CGroup: /system.slice/nginx.service ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2730 nginx: worker process

Esta salida revela que el servicio se ha iniciado correctamente. Sin embargo, la mejor manera de probar esto es solicitando realmente una página de Nginx.

Puedes acceder a la página de inicio predeterminada de Nginx para confirmar que el software está funcionando correctamente navegando a la dirección IP de tu servidor. Si no conoces la dirección IP de tu servidor, puedes escribir esto en el símbolo del sistema de tu servidor:

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

Obtendrás algunas líneas de vuelta. Puedes probar cada una en tu navegador web para ver si funcionan.

Cuando tengas la dirección IP de tu servidor, ingrésala en la barra de direcciones de tu navegador:

http://your_server_ip

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

Esta página está incluida con Nginx para mostrarte que el servidor está funcionando correctamente.

Paso 4 – Administración del Proceso Nginx

Ahora que tienes tu servidor web en funcionamiento, puedes revisar algunos comandos básicos de gestión.

Para detener tu servidor web, escribe:

  1. sudo systemctl stop nginx

Para iniciar el servidor web cuando está detenido, escribe:

  1. sudo systemctl start nginx

Para detener y luego volver a iniciar el servicio, escribe:

  1. sudo systemctl restart nginx

Si estás realizando cambios de configuración, Nginx a menudo puede recargar sin desconectar las conexiones. Para hacer esto, escribe:

  1. sudo systemctl reload nginx

Por defecto, Nginx está configurado para iniciarse automáticamente cuando se inicia el servidor. Si esto no es lo que deseas, puedes deshabilitar este comportamiento escribiendo:

  1. sudo systemctl disable nginx

Para volver a habilitar el servicio para que se inicie en el arranque, puedes escribir:

  1. sudo systemctl enable nginx

Paso 5 – Configuración de Bloques de Servidor (Opcional)

Cuando se utiliza el servidor web Nginx, los bloques de servidor (similares a los hosts virtuales en Apache) se pueden usar para encapsular detalles de configuración y alojar más de un dominio en un solo servidor. En los siguientes comandos, reemplace su_nombre_de_dominio con su propio nombre de dominio. Para obtener más información sobre cómo configurar un nombre de dominio con DigitalOcean, consulte nuestra introducción a DigitalOcean DNS.

Nginx en Debian 10 tiene un bloque de servidor habilitado de forma 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 difícil de manejar si está alojando varios sitios. En lugar de modificar /var/www/html, cree una estructura de directorio dentro de /var/www para el sitio web su_nombre_de_dominio, dejando /var/www/html en su lugar como el directorio predeterminado que se servirá si una solicitud de cliente no coincide con ningún otro sitio.

Cree el directorio para su_nombre_de_dominio de la siguiente manera, utilizando la bandera -p 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 variable de entorno $USER, que debería hacer referencia a su usuario actual del sistema:

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

Los permisos de su raíz web deberían estar correctos si no ha modificado su valor de umask, pero puede asegurarse escribiendo:

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

A continuación, cree una página de ejemplo index.html usando nano o su editor de texto preferido:

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

Dentro, agregue el siguiente HTML de ejemplo:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

Guarda y cierra el archivo cuando hayas terminado. En nano puedes hacer esto presionando CTRL + X, luego Y, y luego ENTER.

Para que Nginx sirva este contenido, debes crear un bloque de servidor con las directivas correctas que apunten a tu directorio web personalizado. En lugar de modificar directamente el archivo de configuración predeterminado, haz uno nuevo en /etc/nginx/sites-available/tu_dominio:

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

Agrega el siguiente bloque de configuración, similar al predeterminado pero actualizado para tu nuevo directorio y nombre de dominio:

/etc/nginx/sites-available/your_domain
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;
        }
}

Observa la configuración actualizada de root hacia tu nuevo directorio y el server_name hacia tu nombre de dominio. Recuerda reemplazar tu_dominio con tu nombre de dominio real.

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

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

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

  • tu_dominio: Responderá a solicitudes para tu_dominio y www.tu_dominio.
  • default: Responderá a cualquier solicitud en el puerto 80 que no coincida con los otros dos bloques.

Para evitar un posible problema de memoria del cubo hash que puede surgir al agregar nombres de servidor adicionales a su configuración, es necesario ajustar un solo valor en el archivo /etc/nginx/nginx.conf. Abra el archivo:

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

Encuentre la directiva server_names_hash_bucket_size 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, pruebe para asegurarse de que no haya errores de sintaxis en ninguno de sus archivos de Nginx:

  1. sudo nginx -t

Si no hay ningún problema, la salida será la siguiente:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: 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

Ahora Nginx debería estar sirviendo su nombre de dominio. Puede probar esto navegando a http://su_domino. El HTML personalizado que creó en la carpeta /var/www/su_domino/html/index.html debería renderizarse aquí:

Paso 6 – Familiarizándose con Archivos y Directorios Importantes de Nginx

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

Contenido

  • /var/www/html: El contenido web real, que por defecto solo consiste en la página predeterminada de Nginx que viste anteriormente, se sirve desde el directorio /var/www/html. 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 residen aquí.
  • /etc/nginx/nginx.conf: El archivo de configuración principal de Nginx. Esto se puede modificar para realizar cambios en la configuración global de Nginx.
  • /etc/nginx/sites-available/: El directorio donde se pueden almacenar bloques de servidor por sitio. Nginx no utilizará los archivos de configuración encontrados en este directorio a menos que estén vinculados al directorio sites-enabled. Por lo general, toda la configuración de bloques de servidor se realiza en este directorio, y luego se habilita mediante la vinculación al otro directorio.
  • /etc/nginx/sites-enabled/: El directorio donde se almacenan los bloques de servidor por sitio habilitados. Por lo general, estos se crean vinculando a archivos de configuración encontrados en el directorio sites-available.
  • /etc/nginx/snippets: Este directorio contiene fragmentos de configuración que pueden incluirse en otros lugares de la configuración de Nginx. Los segmentos de configuración potencialmente repetibles son buenos candidatos para refactorizar 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 su servidor web instalado, tiene muchas opciones para el tipo de contenido que puede servir y las tecnologías que puede usar para crear una experiencia más rica para sus usuarios.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10