Editado 3 Hace unas semanas por ExtremeHow Equipo Editorial
DebianNginxServidor WebDesarrollo webConfiguración del servidorLinuxAdministración de sistemasCódigo abiertoInterfaz de línea de comandosTI
Traducción actualizada 3 Hace unas semanas
Nginx es un software de servidor web ampliamente utilizado, conocido por su alto rendimiento, estabilidad, bajo consumo de recursos y configuración sencilla. En esta guía detallada, veremos cómo configurar un servidor web con Nginx en el sistema operativo Debian. Antes de sumergirnos en los pasos, es esencial entender qué es Nginx y por qué es beneficioso para la configuración de servidores web.
Nginx (pronunciado "engine-x") es un software de código abierto para servir web, hacer proxy inverso, almacenamiento en caché, balanceo de carga, transmisión de medios y más. Comenzó como un proyecto para abordar el problema C10k: manejar diez mil conexiones a la vez. Hoy en día, Nginx es popular por su rendimiento y eficiencia en la gestión de altas cargas. Puede actuar como un servidor proxy inverso para protocolos HTTP, HTTPS, SMTP, POP3 e IMAP, un balanceador de carga y un caché HTTP, entre otros usos. Al ser de código abierto, es gratuito y está en constante mejora por parte de colaboradores de todo el mundo.
Antes de comenzar, asegúrate de tener lo siguiente:
sudo
.Una vez que cumplas con estos requisitos, puedes proceder a instalar y configurar Nginx en tu servidor Debian.
El primer paso es asegurarse de que tu servidor esté actualizado con los últimos paquetes. Un sistema actualizado reduce problemas de incompatibilidad y mejora la seguridad. Usa el siguiente comando para actualizar tu servidor:
sudo apt update sudo apt upgrade
El comando apt update
actualiza la lista de paquetes y sus versiones disponibles. El comando apt upgrade
actualiza los paquetes antiguos con las nuevas versiones.
El administrador de paquetes APT de Debian facilita la instalación de paquetes de software como Nginx. Ejecuta el siguiente comando para instalar Nginx:
sudo apt install nginx
Este comando obtendrá e instalará el paquete Nginx y sus dependencias. Una vez completada la instalación, Nginx comenzará a ejecutarse automáticamente.
Una vez instalado Nginx, es necesario verificar su instalación y asegurarse de que esté funcionando correctamente. Usa el siguiente comando para verificar el estado de Nginx:
sudo systemctl status nginx
La salida esperada muestra que Nginx está activo y funcionando. Si deseas iniciar o detener el servicio de Nginx, puedes usar:
sudo systemctl start nginx sudo systemctl stop nginx
Después de confirmar que Nginx está ejecutándose, abre un navegador web y busca la dirección IP de tu servidor. Si no conoces la dirección IP de tu servidor, puedes averiguarla así:
hostname -I
Al ingresar la dirección IP de tu servidor en la barra de direcciones del navegador, deberías ver la página de bienvenida predeterminada de Nginx. Esto verifica que Nginx está renderizando páginas web correctamente.
En los sistemas Debian, UFW (Uncomplicated Firewall) es comúnmente usado como software de gestión de cortafuegos. Si UFW se está ejecutando en tu servidor, debes permitir el tráfico HTTP para acceder públicamente a tu servidor web a través del cortafuegos. Puedes verificar el estado actual de UFW de la siguiente manera:
sudo ufw status
Si UFW está activado, usa este comando para permitir el tráfico HTTP de Nginx:
sudo ufw allow 'Nginx HTTP'
Verifica nuevamente para asegurarte de que se aplican las reglas pertinentes:
sudo ufw status
Nginx se ejecuta como un servicio en segundo plano. Puedes gestionar este servicio usando el comando systemctl. Aquí tienes algunos comandos systemctl útiles para gestionar Nginx:
sudo systemctl start nginx
: Inicia el servicio Nginx.sudo systemctl stop nginx
: Detiene el servicio Nginx.sudo systemctl restart nginx
: Reinicia el servicio Nginx. Úsalo después de hacer cambios en los archivos de configuración o resolver problemas menores.sudo systemctl reload nginx
: Reinicia Nginx sin interrumpir conexiones. Útil para aplicar cambios sin interrumpir a los usuarios.sudo systemctl enable nginx
: Configura Nginx para que se inicie automáticamente al arrancar.sudo systemctl disable nginx
: Impide que Nginx se inicie automáticamente al arrancar.Los archivos de configuración de Nginx generalmente se encuentran en el directorio /etc/nginx
. El archivo de configuración principal es /etc/nginx/nginx.conf
, que contiene instrucciones para gestionar módulos, configurar permisos de usuario y más.
A menudo, la configuración de host virtual se gestiona por separado en el directorio /etc/nginx/sites-available
. Este directorio contiene archivos de configuración para dominios individuales, que se vinculan simbólicamente a /etc/nginx/sites-enabled
para activarse. También puedes encontrar fragmentos de configuración en /etc/nginx/snippets
para configuraciones reutilizables.
Los bloques de servidor, equivalentes a los hosts virtuales de Apache, permiten que Nginx ejecute múltiples sitios en un solo servidor. Primero, ve a /etc/nginx/sites-available/
y crea un nuevo archivo de configuración:
sudo nano /etc/nginx/sites-available/example.com
En el siguiente archivo de configuración, reemplaza "example.com" con tu nombre de dominio:
server { listen 80; server_name example.com www.example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Con esta configuración, las solicitudes para 'example.com' serán proxificadas a la aplicación que se ejecuta en 127.0.0.1:8080. Usa valores predeterminados sensatos o ajusta la configuración según tus necesidades.
Crea un enlace simbólico a tu archivo de configuración en sites-enabled
:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Esta acción habilita tu bloque del servidor. Prueba la nueva configuración para detectar posibles errores:
sudo nginx -t
Si no hay errores, reinicia Nginx para aplicar los cambios:
sudo systemctl restart nginx
Puedes probar la configuración creando un archivo HTML estático básico. Crea un nuevo directorio que servirá como raíz web:
sudo mkdir -p /var/www/example.com/html
Establece los permisos adecuados:
sudo chown -R $USER:$USER /var/www/example.com/html
Crea un archivo HTML sencillo:
nano /var/www/example.com/html/index.html
Agrega el siguiente contenido a index.html
:
<!DOCTYPE html> <html> <head> <title>Bienvenido</title> </head> <body> <h1>¡Bienvenido a example.com!</h1> </body> </html>
Ve a http://your_server_ip
o http://example.com
para ver tu página web.
Para asegurar tu servidor web, se recomienda implementar un certificado SSL/TLS para el sitio. Los certificados SSL gratuitos pueden obtenerse de Let's Encrypt, una autoridad certificadora que ofrece certificados gratuitos con soporte de automatización.
Instala la utilidad Certbot y el complemento de Nginx para la obtención e instalación del certificado SSL:
sudo apt install certbot python3-certbot-nginx
A continuación, solicita un certificado usando Certbot:
sudo certbot --nginx
Certbot solicitará la información necesaria, como tu nombre de dominio y correo electrónico. Al completarse con éxito, Certbot recarga automáticamente Nginx. Visita https://example.com
para confirmar la conexión segura HTTPS con el ícono de candado.
Certbot configura un trabajo de systemd para gestionar automáticamente las renovaciones de certificados SSL. También puedes realizar una verificación de renovación manual:
sudo certbot renew --dry-run
Verifica la actualización y asegúrate de que sea exitosa sin errores.
Una vez que Nginx está configurado, puedes alojar y servir varios sitios web. Recuerda monitorear el rendimiento del servidor, gestionar logs y mantener actualizados Nginx y los paquetes del servidor para mantener la seguridad y eficiencia. El servidor web Nginx es una herramienta poderosa adecuada para muchas tareas web y necesidades de arquitectura.
Configurar un servidor web con Nginx en Debian implica definir la configuración, añadir bloques de servidor y garantizar la seguridad con SSL. Comprender los fundamentos de la instalación, configuración y gestión de Nginx sienta las bases para aplicaciones más complejas e implementaciones de servicios. Ahora deberías tener un servidor web en funcionamiento listo para servir páginas o aplicaciones con alta eficiencia.
Si encuentras algo incorrecto en el contenido del artículo, puedes