Cómo instalar Nginx con Let's Encrypt TLS / SSL en Ubuntu 20.04

Nginx es un software de servidor HTTP gratuito y de código abierto. Además de sus capacidades de servidor HTTP, NGINX también puede funcionar como un servidor proxy para correo electrónico (IMAP, POP3 y SMTP) y un proxy inverso y equilibrador de carga para servidores HTTP, TCP y UDP. El objetivo detrás de NGINX era crear el servidor web más rápido y mantener esa excelencia sigue siendo un objetivo central del proyecto Nginx. NGINX supera constantemente a Apache y otros servidores en los puntos de referencia que miden el rendimiento del servidor web y ahora es el servidor web utilizado más popular según W3Tech.

En el siguiente tutorial, aprenderá a instalar Nginx en Ubuntu 20.04 LTS utilizando el repositorio predeterminado de Ubuntu o el PPA alternativo de Ondřej Surý con un certificado TLS / SSL gratuito de Let's Encrypt.

Requisitos previos

  • SO recomendado: Ubuntu 20.04 superior de oro
  • Cuenta de usuario: Una cuenta de usuario con acceso sudo o root.

Actualización del sistema operativo

Actualice su Ubuntu sistema operativo para asegurarse de que todos los paquetes existentes al día:

sudo apt update && sudo apt upgrade

Acceso root o sudo

De forma predeterminada, la cuenta creada con Ubuntu estaba dando el estado de sudo. Aún así, suponga que necesita proporcionar cuentas adicionales sudo / acceso root. En ese caso, debe tener acceso a la contraseña de root que se utilizará el comando su o visite nuestro tutorial sobre Cómo agregar un usuario a Sudoers en Ubuntu.

Anuncio

Instalar Nginx

Método 1. Instale Nginx estable desde el repositorio de Ubuntu

El primer método es instalar Nginx desde los repositorios predeterminados de Ubuntu, y se ha demostrado que estas versiones son estables y seguras. Si necesita ejecutar un servidor web principal o un proxy inverso, a menudo se recomienda instalar los paquetes del repositorio de Ubuntu.

Anuncio

Para instalar Nginx, ejecute el siguiente comando.

sudo apt install nginx

Ejemplo de salida:

Cómo instalar Nginx con Let's Encrypt TLS / SSL en Ubuntu 20.04

Tipo "Y" luego presione el "INTRODUCIR CLAVE" para continuar con la instalación.

A continuación, verifique la compilación de la versión y si la instalación fue exitosa.

Anuncio
sudo nginx -v

Ejemplo de salida:

nginx version: nginx/1.18.0

Método 2. Instale el último Nginx Stable o Mainline de Ondřej Surý PPA

Alternativamente, en lugar de instalar la compilación estable predeterminada de Nginx desde el repositorio de Ubuntu 20.04, puede instalar Nginx Stable o Mainline usando el PPA de Ondřej Surý, el mantenedor de PHP para Debian.

Anuncio

Instale uno de los siguientes PPA con el siguiente comando:

Instale el último Nginx (ESTABLE):

sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update

Instale el último Nginx (MAINLINE):

Anuncio
sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update

Ahora que ha instalado el PPA y actualizó la lista de repositorios, instale Nginx con lo siguiente:

sudo apt install nginx-core nginx-common nginx nginx-full

Ejemplo de salida:

Cómo instalar Nginx con Let's Encrypt TLS / SSL en Ubuntu 20.04

Tipo "Y" luego presione el "INTRODUCIR CLAVE" para continuar con la instalación.

Anuncio

A continuación, verifique la compilación de la versión y si la instalación fue exitosa.

sudo nginx -v

Salida de ejemplo (de Mainline):

Anuncio
nginx version: nginx/1.18.0

Ahora verifique para asegurarse de que se instaló el último Nginx del repositorio de Ondřej Surý usando el comando de política apt-cache. Nota la ejemplo de tutorial instalado Nginx Mainline:

apt-cache policy nginx

Salida de ejemplo para Línea principal de Nginx:

Cómo instalar Nginx con Let's Encrypt TLS / SSL en Ubuntu 20.04

Tenga en cuenta que es posible que se le solicite que mantenga o reemplace su / etc / nginx /nginx.conf archivo de configuración durante la instalación si tenía Nginx instalado anteriormente. Se recomienda mantener su archivo de configuración actual presionando (norte). Se realizará una copia independientemente de la versión del desarrollador, y también puede verificar esto en el futuro.

Vea también  Cómo instalar Wine (WineHQ) en Pop!_OS 22.04/20.04

Notará que habrá módulos adicionales disponibles en esta versión, sobre todo el soporte brotli. Instalar hermano, siga los pasos a continuación.

Anuncio

Abra su nginx.conf archivo de configuración:

Anuncio
nano /etc/nginx/nginx.conf

Ahora agregue las líneas adicionales antes en el HTTP {} sección:

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
   application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
   application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
   font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
   image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

Los programas brotli_comp_level se puede configurar entre 1 (más baratos) y 11 (más caros). Por lo general, la mayoría de los servidores se encuentran en el medio, pero si su servidor es un monstruo, configúrelo en 11 y controle los niveles de uso de la CPU.

A continuación, pruebe para asegurarse de que los cambios funcionen correctamente antes de publicarlo:

sudo nginx -t

Si los cambios funcionan correctamente, debería ver lo siguiente:

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

Ahora haga los cambios en vivo reiniciando su servidor:

Anuncio
Anuncio
sudo systemctl restart nginx
sudo systemctl status nginx

Ejemplo de salida:

Cómo instalar Nginx con Let's Encrypt TLS / SSL en Ubuntu 20.04

Configuración de UFW

De forma predeterminada, UFW está instalado en Ubuntu 20.04. Si usa UFW o desea una vista más clara de la ejecución de un firewall, use la información a continuación para configurar UFW para Nginx.

Si UFW no está instalado, reinstale el firewall usando el siguiente comando:

sudo apt install ufw -y

A continuación, habilite UFW con el siguiente comando.

sudo ufw enable

De forma predeterminada, todas las conexiones entrantes ahora están bloqueadas y todas las salientes están permitidas.

Anuncio

A continuación, averigüe qué aplicaciones ha instalado ingresando lo siguiente.

Anuncio
sudo ufw app list

Salida de ejemplo (tenga en cuenta que también aparecerá una lista extensa de otras aplicaciones):

 Available applications:
   Nginx Full
   Nginx HTTP
   Nginx HTTPS

A continuación, puede habilitar Nginx en HTTP (puerto 80), HTTPS (puerto 443) o completo, incluidas todas las opciones.

HTTP (puerto 80):

sudo ufw allow 'Nginx HTTP'

HTTP (puerto 443):

Anuncio
sudo ufw allow 'Nginx HTTPS'

HTTP y HTTPS (completo):

sudo ufw allow 'Nginx FULL'

En el tutorial, "Nginx (completo)" estaba habilitado.

Anuncio

Ejemplo de salida:

 Rules updated
 Rules updated (v6)

Confirme que las reglas del firewall estén activas con el siguiente comando.

sudo ufw status

Verá las reglas enumeradas en la salida.

Anuncio
 Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 Nginx Full (v6)          ALLOW       Anywhere (v6) 

Una vez configurado UFW, verifique que pueda ver la página de inicio de Nginx en su navegador de Internet.

http://your_server_ip

Si todo está funcionando bien, debe aterrizar en la siguiente página:

Cómo instalar Nginx con Let's Encrypt TLS / SSL en Ubuntu 20.04

Configurar el servidor Nginx

Deberá tener la dirección IP del servidor lista para configurar. La forma más sencilla de hacer esto es con lo siguiente.

Anuncio

Encontrar la dirección IP del servidor

Deberá tener la dirección IP del servidor lista para configurar. La forma más sencilla de hacer esto es con lo siguiente.

curl -4 icanhazip.com

Ejemplo de salida:

Anuncio
XXX.XXX.XXX.XXX IP address

Si surge un error, lo más probable es que necesite instalar el paquete curl en su sistema. Ejecute rápidamente este comando:

sudo apt install curl -y

Configurar el directorio de origen del sitio

Nginx bloques de servidor (similar a los hosts virtuales en Apache) puede encapsular los detalles de configuración y alojar más de un dominio desde un solo servidor. En el tutorial, configurará un dominio llamado example.com, pero deberías reemplace esto con su nombre de dominio.

Vea también  Cómo instalar Linux Kernel 6.0 en Ubuntu 22.04 LTS

Cuando instala Nginx, se crea con un directorio www preinstalado. La ubicación se encuentra en / var / www / html /.

Primero, cree el directorio, para example.com, de la siguiente manera, usando el indicador "-p" para crear los directorios principales necesarios:

Anuncio
sudo mkdir -p /var/www/example.com/html

En segundo lugar, deberá asignar el propietario del directorio.

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

En tercer lugar, asigne los permisos del directorio, de modo que el propietario lea, escriba y ejecute los archivos y otorgue solo permisos de lectura y ejecución a grupos y otros. Puede ingresar el siguiente comando:

sudo chmod -R 755 /var/www/your_domain

Configurar página HTML de prueba

En cuarto lugar, cree una página de prueba que utilizará para confirmar que su servidor Nginx está operativo.

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

Dentro del editor nano y nuevo archivo que ha creado. Introduzca la siguiente.

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

Guarda el archivo CTRL + O, luego salir CTRL + X.

Crear bloque de servidor Nginx

Ahora, creará el bloque de servidor para su sitio web. Crearemos un nuevo bloque de servidor de la siguiente manera.

Anuncio
Anuncio
sudo nano /etc/nginx/sites-available/your_domain.conf

Puede pegar el siguiente código de ejemplo en el bloque. Esto es solo un Ejemplo solo de HTTP para pruebas básicas.

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;
 }
}

El ejemplo muestra que su servidor está escuchando dos nombres de servidor, "Tu dominio" en el puerto 80.

Deberá cambiar el directorio raíz al nombre / ubicación del directorio raíz que creó.

Habilitar el bloqueo del servidor Nginx

Para habilitar los bloques del servidor Nginx, debe vincular los archivos de configuración de los sitios disponibles a los sitios habilitados en su directorio Nginx. Esto se puede hacer con el comando ln -s de la siguiente manera.

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

Configuración final y ejecución de prueba

En la etapa final, deberá abrir su nginx.conf archivo.

Anuncio
sudo nano /etc/nginx/nginx.conf

Y descomente la siguiente línea.

Anuncio
server_names_hash_bucket_size 64;

El tamaño del depósito de hash del nombre del servidor se cambia ya que a veces surgen problemas al agregar servidores adicionales.

A continuación, pruebe su Nginx para asegurarse de que funciona antes de reiniciar correctamente.

sudo nginx -t

La salida debería ser si no hay errores en la sintaxis:

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

Si tiene el siguiente resultado ok, reinicie el servidor Nginx para que se realicen los cambios.

Anuncio
sudo systemctl restart nginx

Ahora abre tu Navegador de Internet y escriba el nombre de dominio del servidor. Debería ver que su bloque de servidor está activo.

Cómo instalar Nginx con Let's Encrypt TLS / SSL en Ubuntu 20.04

Asegure Nginx con Let's Encrypt SSL Free Certificate

Idealmente, querría ejecutar su Nginx en HTTPS usando un certificado SSL. La mejor forma de hacer esto es usar Vamos a cifrar una autoridad de certificación libre, automatizada y abierta dirigida por el Grupo de Investigación de Seguridad de Internet sin fines de lucro (ISRG).

Anuncio

Primero, instale el paquete certbot como sigue:

sudo apt install python3-certbot-nginx -y

Una vez instalado, ejecute el siguiente comando para iniciar la creación de su certificado:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Esta es la configuración ideal que incluye redirecciones forzadas HTTPS 301, encabezado de seguridad de transporte estricto y grapado OCSP. Solo asegúrese de ajustar el correo electrónico y el nombre de dominio a sus requisitos.

Anuncio

Ahora tu URL será HTTPS://www.ejemplo.com en lugar de HTTP://www.ejemplo.com.

Vea también  Cómo habilitar/deshabilitar el cortafuegos en Ubuntu 22.10/22.04/20.04

Tenga en cuenta que si usa el antiguo URL HTTP, se redirigirá automáticamente a HTTPS.

Cómo acceder a los registros del servidor Nginx

Directorio de registros de Nginx

De forma predeterminada, todos los registros de acceso / error de NGINX, a menos que los haya cambiado, se encuentran en el directorio de registros, que puede ver el siguiente comando.

Anuncio

Primero, navegue hasta el directorio de registros y enumere los archivos:

cd /var/log/nginx && ls -l

Debería encontrar los siguientes archivos de acceso y error:

Anuncio

Registro de acceso:

/var/log/nginx/access.log

Registro de errores:

/var/log/nginx/error.log

Para ver los registros en tiempo real en su terminal usando el comando sudo tail -f / location / of / log path.

Ejemplo:

Anuncio
sudo tail -f /var/log/nginx/access.log

Otra opción es imprimir las últimas X líneas. Por ejemplo, X se reemplaza con 30 para imprimir 30 líneas agregando el -n 30 banderas.

Anuncio
sudo tail -f /var/log/nginx/access.log -n 30

Estos son solo algunos ejemplos de registros de lectura.

Cómo configurar Nginx Log Rotate

Nginx instala automáticamente la rotación de registros y la configura por defecto, que es rotar diariamente. Puede cambiar esta configuración accediendo al archivo como se muestra a continuación.

sudo nano /etc/nginx/logrotate.d/nginx

A continuación, verá la misma estructura de archivo, si no similar. Puede modificar el contenido aquí. En su mayoría, puede cambiar cuántos registros conservar o pasar de diario a semanal. Esto debe dejarse en el valor predeterminado a menos que tenga necesidades específicas de requisitos de registro para software como la supervisión de fail2ban o similar.

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

La configuración principal que probablemente desee cambiar es la siguiente:

  • Diario - Esto se puede cambiar a Semanal, Mensual. Esto debe mantenerse a diario, de lo contrario será difícil revisar el archivo de registro.
  • Girar 14 - Esta es la cantidad de registros que se deben mantener y eliminar, por lo que como máximo solo hay 14 registros, si solo desea conservar los registros de 7 días, cambie esto a 7.

Se recomienda no tocar ninguna otra configuración a menos que sepa lo que está haciendo.

Anuncio
Anuncio

Cómo actualizar Nginx

Nginx se actualizará de forma predeterminada cuando una nueva versión llegue a los repositorios. Antes de actualizar, siempre se recomienda hacer una copia de seguridad de su directorio Nginx o, al menos, el nginx.conf expediente. Puede hacer cualquiera con el siguiente comando.

Haga una copia de seguridad de nginx.conf (muy recomendado):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Haga una copia de seguridad de toda su carpeta Nginx si lo prefiere:

sudo cp /etc/nginx/ /etc/nginx-bkup

A continuación, ejecute el comando de actualización estándar.

sudo apt update

Si hay una actualización disponible, ejecútela.

Anuncio
sudo apt upgrade 

Es posible que se le solicite esto durante una actualización o instalación, pero hacerlo manualmente de antemano es bastante esencial. Para configuraciones grandes de Nginx de varios sitios, realizar una copia de seguridad en algo como Github o Gitlab sería aún más beneficioso.

Anuncio

Comentarios y Conclusión

En el tutorial, aprendió a instalar y configurar una configuración básica de Nginx en su dominio en Ubuntu 20.04 LTS y crear un certificado SSL gratuito usando Let's Encrypt. En general, Nginx es el software de aplicación web más utilizado y popular en la actualidad, y cada mes y año lo supera tomando más participación de mercado de Apache.

Algunos nuevos contendientes están comenzando a aparecer, como Openlitespeed, pero dadas estas otras aplicaciones web, por ahora, céntrese en cosas específicas como WordPress. Nginx será la aplicación web de referencia durante algún tiempo.


¿No es lo que estabas buscando? Intente buscar tutoriales adicionales.

Deja un comentario