Cómo instalar Nginx con Let's Encrypt TLS / SSL en Debian 11 Bullseye

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á cómo instalar Nginx en Debian 11 Bullseye utilizando el repositorio predeterminado de Debian o el repositorio alternativo de Ondřej Surý con un certificado TLS / SSL gratuito de Let's Encrypt.

Requisitos previos

  • SO recomendado: Diana de Debian 11
  • Cuenta de usuario: Una cuenta de usuario con privilegios de sudo or acceso root (comando su).

Actualización del sistema operativo

Actualice su Diana de Debian 11 sistema operativo para asegurarse de que todos los paquetes existentes estén actualizados:

sudo apt update && sudo apt upgrade

Acceso root o sudo

De forma predeterminada, cuando crea su cuenta al inicio con Debian en comparación con otras distribuciones, no recibe automáticamente el estado de sudoers. Debe tener acceso al contraseña de root que se utilizará el comando su o visite nuestro tutorial sobre Cómo agregar un usuario a Sudoers en Debian.

Anuncio

Instalar Nginx

Método 1. Instale Nginx Stable desde el repositorio de Debian

El primer método es instalar Nginx desde los repositorios predeterminados de Debian, 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 Debian.

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 Debian 11 Bullseye

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 la última línea estable o principal de Nginx desde el repositorio de Ondřej Surý

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

Anuncio

Para importar el repositorio de la línea principal:

curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x

Para importar un repositorio estable:

curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x

Actualice su repositorio para reflejar el nuevo cambio:

Anuncio
sudo apt update

Ahora que ha instalado el Repositorio de Nginx 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 Debian 11 Bullseye

Tipo "Y ”, luego presione el "INTRODUCIR CLAVE" para continuar y completar la instalación.

Anuncio

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:

Anuncio
Cómo instalar Nginx con Let's Encrypt TLS / SSL en Debian 11 Bullseye

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. 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 QCAD en Debian 11 Bullseye

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

Abra su nginx.conf archivo de configuración:

nano /etc/nginx/nginx.conf

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

Anuncio
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.

Anuncio

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:

sudo systemctl restart nginx
systemctl status nginx

Ejemplo de salida:

Cómo instalar Nginx con Let's Encrypt TLS / SSL en Debian 11 Bullseye

Opcional. Configuración de UFW

De forma predeterminada, UFW no está instalado en Debian 11 Bullseye, a diferencia de otras distribuciones como Ubuntu. Sin embargo, si usa UFW o desea una vista más clara de la ejecución de un firewall, use la siguiente información para configurar UFW para Nginx.

Anuncio
Anuncio

Para instalar UFW, use 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.

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

sudo ufw app list

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

Anuncio
 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.

Anuncio

HTTP (puerto 80):

sudo ufw allow 'Nginx HTTP'

HTTP (puerto 443):

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.

Anuncio
sudo ufw status

Verá las reglas enumeradas en la salida.

 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:

Anuncio
Cómo instalar Nginx con Let's Encrypt TLS / SSL en Debian 11 Bullseye

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.

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

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 Wine (WineHQ) en Pop!_OS 22.04/20.04

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

Anuncio

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

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

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

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.

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

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

Anuncio
<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.

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ó.

Anuncio
Anuncio

Bloque de servidor Nginx habilitado

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.

sudo nano /etc/nginx/nginx.conf

Y descomente la siguiente línea.

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.

Anuncio
sudo nginx -t

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

Anuncio
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.

sudo systemctl restart nginx

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

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).

Primero, instale el paquete certbot como sigue:

Anuncio
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.

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

Vea también  Cómo instalar Sysdig en Arch Linux

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:

Registro de acceso:

Anuncio
/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.

Anuncio

Ejemplo:

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 bandera.

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.

Anuncio
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.

Anuncio
/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.

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:

Anuncio
Anuncio
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.

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.

Comentarios y Conclusión

En el tutorial, ha aprendido a instalar y configurar la configuración básica de Nginx en su dominio en Debian 11 Bullseye y a crear un certificado SSL gratuito con 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.

Anuncio


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

Deja un comentario