~/docs /Nginx y Caddy reverse proxy
Nginx y Caddy reverse proxy
Nginx y Caddy reverse proxy
Imported from Notion: Nginx y Caddy reverse proxy
updated:: 2026.07.10
Que resuelve
Guia rapida para publicar servicios internos mediante reverse proxy con Nginx o Caddy, gestionar TLS, cabeceras y errores comunes.
Cuando usarlo
-
Exponer una app local en HTTP/HTTPS.
-
Terminar TLS en el proxy.
-
Enrutar varios dominios al mismo servidor.
-
Anadir logs y controles basicos delante de una app.
Nginx: sitio minimo
Crear server block
server {
listen 80;
server_name {DOMAIN};
location / {
proxy_pass http://127.0.0.1:{APP_PORT};
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;
}
}
Activar sitio
sudo ln -s /etc/nginx/sites-available/{SITE} /etc/nginx/sites-enabled/{SITE}
Validar configuracion
sudo nginx -t
Recargar sin cortar conexiones
sudo systemctl reload nginx
Nginx: WebSocket
location / {
proxy_pass http://127.0.0.1:{APP_PORT};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
Nginx: logs utiles
Ver errores
sudo tail -f /var/log/nginx/error.log
Ver accesos
sudo tail -f /var/log/nginx/access.log
Logs de un sitio
access_log /var/log/nginx/{SITE}.access.log;
error_log /var/log/nginx/{SITE}.error.log;
Caddy: sitio minimo
{DOMAIN} {
reverse_proxy 127.0.0.1:{APP_PORT}
}
Caddy gestiona HTTPS automaticamente si el dominio apunta al servidor y los puertos 80/443 estan accesibles.
Caddy: validar y recargar
Validar
caddy validate --config /etc/caddy/Caddyfile
Recargar
sudo systemctl reload caddy
Ver logs
journalctl -u caddy -f
Cabeceras recomendadas
Nginx
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Caddy
header {
X-Content-Type-Options "nosniff"
X-Frame-Options "SAMEORIGIN"
Referrer-Policy "strict-origin-when-cross-origin"
}
Diagnostico
Probar desde el servidor
curl -i http://127.0.0.1:{APP_PORT}
Probar dominio
curl -I https://{DOMAIN}
Ver puertos
ss -tulpen | grep -E ':80|:443|:{APP_PORT}'
Variables
| Variable | Descripcion |
|---|---|
{DOMAIN} | Dominio publico o interno |
{APP_PORT} | Puerto donde escucha la app |
{SITE} | Nombre del sitio |
Errores comunes
| Sintoma | Causa probable | Solucion |
|---|---|---|
| 502 Bad Gateway | App apagada o puerto incorrecto | Prueba curl 127.0.0.1:{APP_PORT} |
| Certificado no sale | DNS o puertos 80/443 | Revisa DNS, firewall y logs |
| WebSocket falla | Faltan headers Upgrade | Usa bloque WebSocket |
| Cambios no aplican | No recargaste servicio | nginx -t y reload |
Checklist final
-
La app responde en local.
-
DNS apunta al servidor.
-
Firewall permite 80/443.
-
Config valida antes de recargar.
-
Logs separados si hay varios sitios.
- EOF -