EQVPS

Cómo configurar un proxy inverso nginx con HTTPS

Pon un dominio limpio y HTTPS automático delante de cualquier app que escuche en un puerto local. Dos vías: nginx con Certbot, o Caddy para TLS automático en una línea. Paso a paso, con la configuración lista para copiar.

La mayoría de las apps autoalojadas escuchan en un puerto local como 127.0.0.1:3000 y hablan HTTP plano. Un proxy inverso se coloca delante en los puertos 80/443, termina el HTTPS con un certificado real y reenvía el tráfico a ese puerto local, dándote un https://app.yourdomain.com limpio y permitiéndote ejecutar varias apps tras una sola IP. Aquí van las dos vías habituales.

Requisitos previos

Opción A — Caddy (HTTPS automático, una línea)

sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy

Eso es todo: Caddy obtiene un certificado Let's Encrypt para el dominio y lo renueva automáticamente.

Opción B — nginx + Certbot

sudo apt install -y nginx certbot python3-certbot-nginx

Crea /etc/nginx/sites-available/app:

server {
    listen 80;
    server_name app.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Actívalo y añade HTTPS:

sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com

Certbot edita la configuración para servir HTTPS y deja lista la renovación automática.

Advertencias honestas

Siguientes pasos

El proxy inverso es justo lo que permite a un solo servidor servir muchas cosas — mira autoalojar varios servicios tras una sola IP. ¿Ejecutas la app en un contenedor? Empieza por cómo instalar Docker. Para que la propia app sobreviva a reinicios y caídas, mira cómo crear un servicio systemd.

Preguntas frecuentes

¿Qué es un proxy inverso y por qué lo necesito?

Tu aplicación suele escuchar en un puerto local como 127.0.0.1:3000. El proxy inverso se coloca delante en los puertos 80/443, termina el HTTPS y reenvía las peticiones a ese puerto local. Te da un dominio limpio, un certificado TLS válido y la capacidad de ejecutar varias apps tras una sola IP, sin que la app tenga que ocuparse de nada de eso por sí misma.

nginx o Caddy, ¿cuál elijo?

Caddy es la vía más rápida: obtiene y renueva certificados Let's Encrypt de forma automática, y un proxy HTTPS funcional es una línea de configuración. nginx es más conocido y flexible, pero para el TLS añades Certbot. Si quieres HTTPS con el mínimo esfuerzo, usa Caddy; si ya conoces nginx o quieres sus funciones, usa nginx.

¿Necesito un dominio?

Para un certificado HTTPS de confianza, sí: Let's Encrypt emite certificados para nombres de dominio, no para IP a secas. Apunta un registro A a la IP de tu servidor, espera la propagación de DNS y el proxy podrá obtener un certificado para ese nombre.

¿Qué puertos deben estar abiertos?

80 y 443 de entrada. El puerto 80 se usa para el desafío inicial del certificado y la redirección a HTTPS; el 443 sirve el tráfico cifrado. Abre ambos en tu firewall (mira la guía de UFW) y asegúrate de que nada más los esté ocupando ya.

¿Por qué falla la emisión del certificado?

Casi siempre el DNS o los puertos. El registro A del dominio debe apuntar a este servidor y estar propagado, y los puertos 80/443 deben ser alcanzables (abiertos en el firewall, no bloqueados aguas arriba). Corrige esas dos cosas y la emisión funciona; tanto Caddy como Certbot reintentan.

Comentarios

Aún no hay comentarios. Sé el primero.

Deja un comentario

Los comentarios se moderan antes de aparecer.