Kapitel 5 · 5.3
En app bakom en reverse proxy
Många appar har en egen liten webbserver på en port, till exempel 3001 eller 5678. Den öppnar du inte mot internet. Din webbserver tar emot trafiken på 443 med https och skickar den vidare till appen: en reverse proxy.
Med Caddy
Om appen lyssnar på själva servern på port 3001:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Caddy skickar automatiskt vidare rätt rubriker (som X-Forwarded-For och X-Forwarded-Proto) och websockets. Kör appen i Docker bredvid Caddy använder du containerns namn, som i Din arbetsmapp med compose.yaml, .env och Caddy.
Med nginx
server {
listen 80;
listen [::]:80;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Kör sedan sudo nginx -t, sudo systemctl reload nginx och sudo certbot --nginx -d status.example.com.
Bra att veta
- Låt appen bara lyssna på
127.0.0.1, inte på alla adresser. Då kan ingen ta sig runt din proxy. - Många appar vill veta på vilken adress de nås, till exempel med en inställning som
DOMAINellerN8N_HOST. Fyll i https-adressen där. - En adminsida som inte är till för alla skyddar du extra: med ett lösenord i själva appen, med tvåstegsverifiering eller bara via en SSH-tunnel (se En SSH-config: logga in med ett kort namn).
- Extra säkerhetsrubriker som HSTS ställer du in med
headeri Caddy elleradd_headeri nginx. Slå inte på HSTS förrän https fungerar överallt.
