Cómo configurar un proxy inverso en Nginx
Proxy de Node.js, Docker u otras apps mediante Nginx con soporte WebSocket y SSL en su VPS.

Un proxy inverso permite que Nginx reciba tráfico HTTP/HTTPS público y lo reenvíe a aplicaciones backend (Node.js en el puerto 3000, contenedores Docker, APIs Python). Es esencial para despliegues en producción en un VPS Hiddence.
Requisitos previos
- Nginx instalado y en ejecución
- La aplicación backend escuchando en localhost (p. ej. 127.0.0.1:3000)
- Dominio apuntando a su VPS (para SSL)
- Puertos 80 y 443 abiertos en el firewall
Configuración básica de proxy inverso
Cree una configuración de sitio para su dominio:
server {
listen 80;
server_name app.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
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;
}
}
sudo nginx -t && sudo systemctl reload nginxSoporte WebSocket
Necesario para Socket.io, muchos paneles y aplicaciones en tiempo real:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}Añadir HTTPS con Certbot
Cuando HTTP funcione, emita un certificado gratuito:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d app.yourdomain.com
# Certbot will update your server block for SSL automaticallyConsejos
- Use proxy_buffering off para streaming/SSE si hace falta
- Configure client_max_body_size para subidas de archivos
- Ejecute varios backends en subdominios distintos
- Use bloques upstream para equilibrar varios backends
- Revise error.log si obtiene 502 Bad Gateway
El proxy inverso de Nginx es la forma habitual de exponer aplicaciones backend de forma segura. Configure las cabeceras proxy, añada WebSockets si hace falta y habilite SSL con Certbot.