Guía completa para crear un proxy inverso Nginx seguro
Crear un proxy inverso seguro, fiable y escalable es crucial para empresas y profesionales de TI que gestionan sitios web con mucho tráfico o aplicaciones complejas. Nginx, un servidor web y proxy inverso de código abierto, es una solución potente para enrutar, optimizar y proteger el tráfico de sus servicios backend. En esta guía, explicaremos el proceso de configuración de un proxy inverso robusto con Nginx en Ubuntu 24.04, abarcando pasos críticos como el cifrado TLS, la limitación de velocidad y la integración con Cloudflare.
Si administra sitios web de nivel empresarial, plataformas de comercio electrónico o servidores multimedia, esta guía le permitirá mejorar el rendimiento, garantizar el tiempo de actividad y proteger su infraestructura de vulnerabilidades.
¿Qué es un proxy inverso Nginx?
Un proxy inverso Nginx actúa como servidor intermediario entre los clientes y los servicios backend. Reenvía las solicitudes de los clientes al servidor backend correspondiente, optimizando la distribución de la carga, mejorando la seguridad y habilitando funciones como el almacenamiento en caché, la terminación SSL y el filtrado de tráfico. Esta configuración es especialmente útil para alojar servidores multimedia, aplicaciones multisitio y servicios protegidos por firewalls.
sbb-itb-59e1987
¿Por qué necesitas un proxy inverso?
Un proxy inverso proporciona varios beneficios clave:
- Seguridad mejorada:Oculta las IP de los servidores backend y habilita el cifrado a través de TLS/SSL.
- Equilibrio de carga:Distribuye el tráfico de manera uniforme entre múltiples servidores back-end.
- Mejoramiento:Reduce la latencia y mejora la eficiencia de los recursos.
- Escalabilidad:Facilita la gestión de escenarios de alto tráfico.
- Facilidad de gestión:Simplifica la configuración de múltiples servicios backend detrás de un dominio unificado.
En este tutorial, demostraremos cómo:
- Configurar Nginx como proxy inverso.
- Proteja su configuración con certificados TLS de Let's Encrypt.
- Configure optimizaciones avanzadas como limitación de velocidad y reenvío de solicitudes.
- Integre Cloudflare para evitar las restricciones de puerto del ISP.
Paso 1: Instalación de Nginx y Certbot en Ubuntu 24.04
Actualice su sistema
Antes de instalar cualquier software, asegúrese de que su sistema esté actualizado:
sudo apt update y sudo apt upgrade Instalar Nginx y Certbot
Utilice los siguientes comandos para instalar Nginx y Certbot con el complemento Nginx:
sudo apt install nginx -y sudo apt install certbot python3-certbot-nginx -y Verificar la instalación
Confirme que Nginx se esté ejecutando:
sudo systemctl status nginx Para probar el acceso, determine la dirección IP de su servidor:
ip a Accede a la dirección IP en un navegador. Si lo haces correctamente, verás la página de bienvenida predeterminada de Nginx.
Paso 2: Configuración de las reglas del firewall
Habilitar Firewall no complicado (UFW)
UFW le permite administrar las reglas del firewall fácilmente:
sudo ufw permitir 'Nginx Full' sudo ufw permitir OpenSSH sudo ufw enable Verifique el estado de su firewall para asegurarse de que los puertos correctos estén abiertos:
sudo ufw status Paso 3: Configuración del proxy Nginx
Crear archivos de configuración personalizados
Para mayor flexibilidad y seguridad, utilice archivos de fragmentos para almacenar configuraciones específicas. Cree los siguientes archivos:
- Encabezados de seguridad:
Definir encabezados de seguridad para mejorar la protección:sudo nano /etc/nginx/snippets/security-headers.confadd_header Opciones de marco X "MISMO ORIGEN"; add_header Opciones de tipo de contenido X "nosniff"; add_header Protección XSS X "1; modo=bloque"; - Configuración de proxy:
Optimice las transmisiones largas y evite respuestas lentas:sudo nano /etc/nginx/snippets/proxy.conftiempo de espera de conexión de proxy 60 s; tiempo de espera de envío de proxy 60 s; tiempo de espera de lectura de proxy 60 s; - Límites de velocidad:
Mitigar solicitudes excesivas:sudo nano /etc/nginx/snippets/rate-limit.conflímite_req_zona $dirección_remota_binaria zona=milímite:10m velocidad=10r/s;
Incluir fragmentos en la configuración principal
Editar la configuración principal de Nginx:
sudo nano /etc/nginx/nginx.conf Agregue lo siguiente debajo de http bloquear:
incluir /etc/nginx/snippets/*.conf; Reinicie Nginx para aplicar los cambios:
sudo systemctl reload nginx Paso 4: Configuración de un proxy inverso para un servicio backend
Crear un host virtual
Cree un archivo de configuración para su servicio backend:
sudo nano /etc/nginx/sites-available/jellyfin Ejemplo de configuración para un servidor multimedia Jellyfin:
servidor { escuchar 80; nombre_del_servidor jelly.yourdomain.com; ubicación / { contraseña_del_proxy http://10.10.0.112:8096; incluir /etc/nginx/snippets/proxy.conf; } } Habilite el sitio creando un enlace simbólico:
sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/ Pruebe y recargue Nginx:
sudo nginx -t sudo systemctl recargar nginx Paso 5: Proteger su dominio con Let's Encrypt TLS
Para proteger su dominio, utilice Let's Encrypt para emitir certificados gratuitos:
sudo certbot --nginx -d jelly.tudominio.com Certbot configura automáticamente SSL en el archivo de su sitio Nginx. Para garantizar que los certificados se renueven automáticamente, verifique que el temporizador systemd esté activo:
sudo systemctl list-timers | grep certbot Paso 6: Integración de Cloudflare para mayor seguridad y omisión de puertos del ISP
Instalar Cloudflared
Cloudflared crea un túnel seguro para enrutar el tráfico a través de Cloudflare, eludiendo las restricciones del ISP en los puertos 80 y 443:
- Descargar el
.debutantepaquete de la página de GitHub de Cloudflare. - Instalar el paquete:
sudo dpkg -i cloudflared-version.deb
Configurar un túnel
Autenticarse con su cuenta de Cloudflare:
inicio de sesión en el túnel de Cloudflared Crear un nuevo túnel:
túnel de Cloudflared crea mi túnel Editar el archivo de configuración de Cloudflare:
sudo nano /etc/cloudflared/config.yml Ejemplo de configuración:
túnel: mi-túnel archivo-de-credenciales: /home/usuario/.cloudflared/mi-túnel.json ingreso: - nombre-de-host: jelly.su-dominio.com servicio: http://localhost:8096 - servicio: http_status:404 Iniciar y habilitar el servicio de túnel:
sudo systemctl habilitar cloudflared sudo systemctl iniciar cloudflared Puntos clave
- Proxy inverso Nginx:Esencial para enrutar el tráfico de forma segura y optimizar los servicios de backend.
- Cifrado TLS:Utilice Let's Encrypt para proteger sus dominios con certificados SSL gratuitos.
- Reglas del firewall:Abra los puertos necesarios para HTTP (80), HTTPS (443) y SSH (22).
- Optimización de la seguridad:Implementar encabezados y limitación de velocidad para prevenir ataques.
- Integración con Cloudflare:Utilice túneles de Cloudflared para un alojamiento seguro y compatible con ISP.
- AutomatizaciónLos temporizadores de systemd garantizan que los certificados SSL se renueven automáticamente.
Conclusión
Configurar un proxy inverso Nginx seguro requiere atención al detalle y una configuración meticulosa, pero la recompensa bien vale la pena. Ya sea que aloje servidores multimedia como Jellyfin o administre aplicaciones empresariales, esta guía le proporciona las herramientas y el conocimiento para crear un entorno altamente seguro y eficiente. Con funciones como TLS, túneles de Cloudflare y optimizaciones avanzadas, su infraestructura está lista para las demandas modernas.
Fuente: "¡Deja de exponer tus aplicaciones! ¡Crea un proxy inverso Nginx seguro!" – KeepItTechie, YouTube, 19 de agosto de 2025 – https://www.youtube.com/watch?v=MzbhS2S7H_g
Uso: Incluido como referencia. Citas breves para comentarios o reseñas.
Entradas de blog relacionadas
- Cómo dominar las configuraciones de Nginx para un rendimiento óptimo del servidor web
- Dominando la configuración de NGINX: Cómo Serverion facilita el éxito del alojamiento web B2B
- Rebobinado de configuración de NGINX: Serverion recupera el arte perdido del ajuste de caché de proxy
- La frontera olvidada de la configuración de NGINX: la inmersión de Serverion en el microcaching FastCGI