Encontranos en redes
NginxReverse ProxyProxy7 min de lectura
Configurar reverse proxy con Nginx
Configurá Nginx como reverse proxy para redirigir tráfico a aplicaciones internas por puerto o dominio.
Un reverse proxy permite exponer aplicaciones internas (Node.js, Python, etc.) a través de Nginx con un dominio, SSL y headers de seguridad.
Caso de uso
Tu aplicación corre en localhost:3000 y querés que sea accesible en https://midominio.com.
Paso 1 — Crear la configuración de Nginx
bash
sudo nano /etc/nginx/sites-available/midominio.comContenido:
nginx
server {
listen 80;
listen [::]:80;
server_name midominio.com www.midominio.com;
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;
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;
proxy_cache_bypass $http_upgrade;
}
}Paso 2 — Activar y verificar
bash
sudo ln -s /etc/nginx/sites-available/midominio.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxPaso 3 — Agregar SSL con Certbot
bash
sudo certbot --nginx -d midominio.com -d www.midominio.comCertbot modifica automáticamente la configuración para HTTPS.
Paso 4 — Headers de seguridad (opcional)
Agregá dentro del bloque server:
nginx
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;Paso 5 — WebSocket support
Si tu app usa WebSockets, la configuración de Upgrade y Connection ya lo soporta. Para rutas específicas:
nginx
location /ws {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}Múltiples aplicaciones
Podés servir varias apps desde el mismo servidor usando diferentes dominios o paths:
nginx
location /api {
proxy_pass http://127.0.0.1:4000;
}
location /app {
proxy_pass http://127.0.0.1:5000;
}Verificar
bash
sudo nginx -t && sudo systemctl reload nginx
curl -I https://midominio.com¿Te resultó útil esta guía?