Cómo instalar Nginx en Ubuntu 22.04

Introducción

Nginx es uno de los servidores web más populares del mundo y aloja algunos de los sitios web más grandes y con mayor tráfico de internet. Es una opción ligera que puede usarse como servidor web o como proxy inverso.

En esta guía, analizaremos cómo instalar Nginx en su servidor Ubuntu 22.04, ajustar el firewall, administrar el proceso Nginx y configurar bloques de servidor para alojar más de un dominio desde un solo servidor.

Prerrequisitos

Antes de comenzar esta guía, debe tener configurado en su servidor un usuario normal (no root) con privilegios de sudo. Puede aprender a configurar una cuenta de usuario normal siguiendo nuestra Guía de configuración inicial del servidor para Ubuntu 22.04 .

Cuando tenga una cuenta disponible, inicie sesión como usuario no root para comenzar.

Paso 1: Instalación de Nginx

Como Nginx está disponible en los repositorios predeterminados de Ubuntu, es posible instalarlo desde estos repositorios utilizando el aptsistema de empaquetado.

Dado que esta es nuestra primera interacción con el aptsistema de empaquetado en esta sesión, actualizaremos nuestro índice de paquetes local para tener acceso a los listados de paquetes más recientes. Después, podremos instalar nginx:

sudo apt update
sudo apt install nginx

Pulse  Y cuando se le solicite para confirmar la instalación. Si se le solicita reiniciar algún servicio, pulse  ENTER para aceptar los valores predeterminados y continuar. aptSe instalará Nginx y las dependencias necesarias en su servidor.

Paso 2 – Ajuste del firewall

Antes de probar Nginx, es necesario configurar el firewall para permitir el acceso al servicio. Nginx se registra como servicio al ufwinstalarse, lo que facilita su acceso.

Enumere las configuraciones de la aplicación ufwcon la que sabe trabajar escribiendo:

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

Como lo demuestra el resultado, 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 solo abre el puerto 80 (tráfico web normal, sin cifrar)
  • Nginx HTTPS : este perfil solo abre el puerto 443 (tráfico cifrado TLS/SSL)

Se recomienda habilitar el perfil más restrictivo que permita el tráfico configurado. Por ahora, solo necesitamos permitir el tráfico en el puerto 80.

Puedes habilitar esto escribiendo:

sudo ufw allow 'Nginx HTTP'

Puedes verificar el cambio escribiendo:

sudo ufw status

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

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Paso 3 – Comprobación de su servidor web

Al finalizar la instalación, Ubuntu 22.04 inicia Nginx. El servidor web ya debería estar en funcionamiento.

Podemos verificar con el systemdsistema de inicio para asegurarnos de que el servicio se esté ejecutando escribiendo:

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 Fri 2022-03-01 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   Memory: 3.5M
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

Como se confirma en este punto, el servicio se ha iniciado correctamente. Sin embargo, la mejor manera 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 funciona correctamente navegando a la dirección IP de su servidor. Si desconoce la dirección IP de su servidor, puede encontrarla con la herramienta icanhazip.com , que le proporcionará su dirección IP pública, tal como la recibió de otra ubicación en internet:

curl -4 icanhazip.com

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

http://your_server_ip

Debería recibir la página de destino predeterminada de Nginx:

Página predeterminada de Nginx

Si está en esta página, su servidor está funcionando correctamente y está listo para ser administrado.

Paso 4: Gestión del proceso Nginx

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

Para detener su servidor web, escriba:

sudo systemctl stop nginx

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

sudo systemctl start nginx

Para detener y luego iniciar nuevamente el servicio, escriba:

sudo systemctl restart nginx

Si solo realiza cambios de configuración, Nginx suele poder recargarse sin perder conexiones. Para ello, escriba:

sudo systemctl reload nginx

De forma predeterminada, Nginx está configurado para iniciarse automáticamente al arrancar el servidor. Si no desea que esto sea así, puede desactivar este comportamiento escribiendo:

sudo systemctl disable nginx

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

sudo systemctl enable nginx

Ahora ha aprendido los comandos de administración básicos y debería estar listo para configurar el sitio para alojar más de un dominio.

Al usar el servidor web Nginx, se pueden usar bloques de servidor (similares a los hosts virtuales de Apache) para encapsular los detalles de configuración y alojar más de un dominio desde un solo servidor. Configuraremos un dominio llamado “your_domain” , pero deberá reemplazarlo por su propio nombre de dominio .

Nginx en Ubuntu 22.04 tiene un bloque de servidor habilitado por defecto, configurado para servir documentos desde un directorio en /var/www/html. Si bien esto funciona bien para un solo sitio, puede resultar complicado si se alojan varios. En lugar de modificar /var/www/html, crearemos una estructura de directorios dentro /var/wwwde nuestro sitio your_domain/var/www/html , dejando este como directorio predeterminado para servir si una solicitud de cliente no coincide con ningún otro sitio.

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

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

A continuación, asigne la propiedad del directorio con la $USERvariable de entorno:

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

Los permisos de sus raíces web deberían ser correctos si no ha modificado el umaskvalor que establece los permisos de archivo predeterminados. Para garantizar que sus permisos sean correctos y permitir al propietario leer, escribir y ejecutar los archivos, mientras que solo otorga permisos de lectura y ejecución a grupos y otros, puede introducir el siguiente comando:

sudo chmod -R 755 /var/www/your_domain

A continuación, crea una index.htmlpágina de muestra utilizando nanotu editor favorito:

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

Dentro, agregue el siguiente HTML de muestra: /var/www/tu_dominio/html/index.html

<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Guarde y cierre el archivo presionando Ctrl+Xpara salir, luego cuando se le solicite guardar Yy luego Enter.

Para que Nginx muestre este contenido, es necesario crear un bloque de servidor con las directivas correctas. En lugar de modificar directamente el archivo de configuración predeterminado, crearemos uno nuevo en :/etc/nginx/sites-available/your_domain

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

Pegue el siguiente bloque de configuración, que es similar al predeterminado, pero actualizado para nuestro 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;
        }
}

Tenga en cuenta que hemos actualizado la rootconfiguración de nuestro nuevo directorio y server_namede nuestro nombre de dominio.

A continuación, habilitemos el archivo creando un enlace desde él al sites-enableddirectorio que Nginx lee durante el inicio:

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

Nota: Nginx utiliza una práctica común llamada enlaces simbólicos (symlinks) para rastrear cuáles de tus bloques de servidor están habilitados. Crear un enlace simbólico es como crear un acceso directo en el disco, de modo que puedas eliminarlo posteriormente del sites-enableddirectorio, conservando el bloque de servidor sites-availablesi deseas habilitarlo.

Ahora hay dos bloques de servidor habilitados y configurados para responder a solicitudes según 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 80 que no coincida con los otros dos bloques.

Para evitar un posible problema de memoria en el contenedor hash que puede surgir al añadir nombres de servidor adicionales, es necesario ajustar un único valor en el /etc/nginx/nginx.confarchivo. Abra el archivo:

sudo nano /etc/nginx/nginx.conf

Busca la server_names_hash_bucket_sizedirectiva y elimina el #símbolo para descomentar la línea. Si usas nano, puedes buscar rápidamente palabras en el archivo presionando CTRLy w.

Nota: Comentar líneas de código, generalmente colocándolas #al principio, es otra forma de deshabilitarlas sin necesidad de eliminarlas. Muchos archivos de configuración incluyen varias opciones comentadas para que puedan habilitarse o deshabilitarse alternando entre el código activo y la documentación. /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 sus archivos Nginx:

sudo nginx -t

Si no hay ningún problema, reinicie Nginx para habilitar los cambios:

sudo systemctl restart nginx

Nginx ya debería servir tu nombre de dominio. Puedes comprobarlo navegando a [nombre del dominio] , donde deberías ver algo como esto:http://your_domain

Primer bloque de servidor de Nginx

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

Ahora que sabe cómo administrar el servicio Nginx, debería tomarse unos minutos para familiarizarse con algunos directorios y archivos importantes.

Contenido

  • /var/www/htmlEl contenido web, que por defecto solo consiste en la página predeterminada de Nginx que vio anteriormente, se sirve desde el /var/www/htmldirectorio. Esto se puede cambiar modificando los archivos de configuración de Nginx.

Configuración del servidor

  • /etc/nginxEl directorio de configuración de Nginx. Todos los archivos de configuración de Nginx se encuentran aquí.
  • /etc/nginx/nginx.confEl archivo de configuración principal de Nginx. Se puede modificar para realizar cambios en la configuración global de Nginx.
  • /etc/nginx/sites-available/El directorio donde se almacenan los bloques de servidor por sitio. Nginx no usará los archivos de configuración que se encuentran en este directorio a menos que estén vinculados a él sites-enabled. Normalmente, toda la configuración de los 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 habilitados por sitio. Normalmente, se crean mediante enlaces a los archivos de configuración que se encuentran en el sites-availabledirectorio.
  • /etc/nginx/snippetsEste directorio contiene fragmentos de configuración que pueden incluirse en otras partes de la configuración de Nginx. Los segmentos de configuración potencialmente repetibles son ideales 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 su servidor web instalado, tiene muchas opciones para el tipo de contenido que desea servir y las tecnologías que desea utilizar para crear una experiencia más rica.

Si desea desarrollar una pila de aplicaciones más completa, consulte el artículo Cómo instalar Linux, Nginx, MySQL, PHP (pila LEMP) en Ubuntu 22.04 .

Para configurar HTTPS para su nombre de dominio con un certificado SSL gratuito usando Let’s Encrypt , debe continuar con Cómo proteger Nginx con Let’s Encrypt en Ubuntu 22.04 .

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post