Cómo instalar Nginx en Ubuntu 20.04

Introducción
Nginx es uno de los servidores web más populares del mundo y es responsable de alojar algunos de los sitios más grandes y con mayor tráfico de Internet. Es una opción liviana que se puede utilizar como servidor web o proxy inverso.
En esta guía, analizaremos cómo instalar Nginx en su servidor Ubuntu 20.04, ajustar el firewall, administrar el proceso Nginx y configurar bloques de servidor para alojar más de un dominio desde un solo servidor.
Simplifique la implementación de aplicaciones con la plataforma de aplicaciones DigitalOcean . Implemente directamente desde GitHub en minutos.
Prerrequisitos
Antes de comenzar con esta guía, debe tener un usuario regular, no root, con privilegios sudo configurados en su servidor. Puede aprender a configurar una cuenta de usuario regular siguiendo nuestra Guía de configuración inicial del servidor para Ubuntu 20.04 .
También es posible que desees haber registrado un nombre de dominio antes de completar los últimos pasos de este tutorial. Para obtener más información sobre cómo configurar un nombre de dominio con DigitalOcean, consulta nuestra Introducción a DigitalOcean DNS .
Cuando tenga una cuenta disponible, inicie sesión como usuario no root para comenzar.
Paso 1 – Instalación de Nginx
Dado que Nginx está disponible en los repositorios predeterminados de Ubuntu, es posible instalarlo desde estos repositorios utilizando el apt
sistema de empaquetado.
Dado que esta es nuestra primera interacción con el apt
sistema de empaquetado en esta sesión, actualizaremos nuestro índice de paquetes local para tener acceso a los listados de paquetes más recientes. Luego, podemos instalar nginx
:
- sudo apt update
- sudo apt install nginx
Después de aceptar el procedimiento, apt
instalará Nginx y todas las dependencias necesarias en su servidor.
Paso 2 – Ajuste del firewall
Antes de probar Nginx, es necesario ajustar el software de firewall para permitir el acceso al servicio. Nginx se registra como un servicio ufw
al momento de la instalación, lo que facilita el acceso a Nginx.
Enumere las configuraciones de la aplicación ufw
con las 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 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. En este momento, solo necesitaremos permitir el tráfico en el puerto 80.
Puedes habilitar esto escribiendo:
- sudo ufw allow 'Nginx HTTP'
Puede verificar el cambio escribiendo:
- sudo ufw status
La salida indicará 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, Ubuntu 20.04 inicia Nginx. El servidor web ya debería estar en funcionamiento.
Podemos verificar con el systemd
sistema 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 2020-04-20 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 artículo, 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 hasta la dirección IP de su servidor. Si no conoce la dirección IP de su servidor, puede encontrarla utilizando la herramienta icanhazip.com , que le proporcionará su dirección IP pública tal como la recibió desde 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:
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 volver a iniciar el servicio, escriba:
- sudo systemctl restart nginx
Si solo realiza cambios de configuración, Nginx puede volver a cargarse sin interrumpir las conexiones. Para ello, escriba:
- 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:
- 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.
Paso 5: Configuración de bloques de servidores (recomendado)
Al utilizar el servidor web Nginx, se pueden utilizar 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 único servidor. Configuraremos un dominio llamado your_domain , pero deberá reemplazarlo por su propio nombre de dominio .
Nginx en Ubuntu 20.04 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 difícil de manejar si está alojando varios sitios. En lugar de modificar /var/www/html
, creemos una estructura de directorio dentro /var/www
de nuestro sitio your_domain , dejándolo /var/www/html
como el directorio predeterminado que se servirá si una solicitud de cliente no coincide con ningún otro sitio.
Cree el directorio para su_dominio de la siguiente manera, utilizando el -p
indicador para crear cualquier directorio principal necesario:
- sudo mkdir -p /var/www/your_domain/html
A continuación, asigne la propiedad del directorio con la $USER
variable de entorno:
- sudo chown -R $USER:$USER /var/www/your_domain/html
Los permisos de las raíces web deben ser correctos si no ha modificado su umask
valor, que establece los permisos de archivo predeterminados. Para asegurarse de que sus permisos sean correctos y permitir que el propietario lea, escriba y ejecute los archivos, mientras que otorga solo permisos de lectura y ejecución a grupos y otros, puede ingresar el siguiente comando:
- sudo chmod -R 755 /var/www/your_domain
A continuación, crea una index.html
página de muestra utilizando nano
tu editor favorito:
- sudo 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! The your_domain server block is working!/h1 /body/html
Guarde y cierre el archivo presionando Ctrl+X
para salir, luego cuando se le solicite guardar, Y
y luego Enter
.
Para que Nginx pueda ofrecer este contenido, es necesario crear un bloque de servidor con las directivas correctas. En lugar de modificar directamente el archivo de configuración predeterminado, creemos 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 root
configuración de nuestro nuevo directorio y de server_name
nuestro nombre de dominio.
A continuación, habilitemos el archivo creando un enlace desde él al sites-enabled
directorio 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, o symlinks, para rastrear cuáles de los bloques de servidor están habilitados. Crear un enlace simbólico es como crear un acceso directo en el disco, de modo que luego pueda eliminar el acceso directo del sites-enabled
directorio mientras mantiene el bloque de servidor sites-available
si desea habilitarlo.
Ahora hay dos bloques de servidor habilitados y configurados para responder a solicitudes basadas en sus directivas listen
y server_name
(puede leer más sobre cómo Nginx procesa estas directivas aquí ):
your_domain
:Responderá a las solicitudes deyour_domain
ywww.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 de hash bucket que puede surgir al agregar nombres de servidores adicionales, es necesario ajustar un único valor en el /etc/nginx/nginx.conf
archivo. Abra el archivo:
- sudo nano /etc/nginx/nginx.conf
Busque la server_names_hash_bucket_size
directiva y elimine el #
símbolo para descomentar la línea. Si está utilizando nano, puede buscar rápidamente palabras en el archivo presionando CTRL
y w
.
Nota: Comentar líneas de código (normalmente colocándolas #
al principio de una línea) es otra forma de deshabilitarlas sin necesidad de eliminarlas. Muchos archivos de configuración se entregan con varias opciones comentadas para que se puedan habilitar o deshabilitar 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 los archivos Nginx:
- sudo nginx -t
Si no hay ningún problema, reinicie Nginx para habilitar los cambios:
- sudo systemctl restart nginx
Nginx debería ahora servir a tu nombre de dominio. Puedes comprobarlo navegando a , donde deberías ver algo como esto:http://your_domain
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/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/html
directorio. 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 alsites-enabled
directorio. 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 elsites-available
directorio./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 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 20.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 20.04 .
Deja una respuesta