Rozdział 5 · 5.3
Aplikacja za reverse proxy
Wiele aplikacji ma własny, niewielki serwer WWW działający na określonym porcie, np. 3001 lub 5678. Takiego portu nie należy otwierać do internetu. Serwer WWW odbiera ruch na porcie 443 przez https i przekazuje go do aplikacji: jest to tzw. reverse proxy.
Z użyciem Caddy
Jeśli aplikacja nasłuchuje na samym serwerze na porcie 3001:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Caddy automatycznie przekazuje właściwe nagłówki (np. X-Forwarded-For i X-Forwarded-Proto) oraz połączenia websocket. Jeśli aplikacja działa w Dockerze obok Caddy, prosimy użyć nazwy kontenera, tak jak w artykule Katalog roboczy z compose.yaml, .env i Caddy.
Z użyciem 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";
}
}
Następnie prosimy wykonać sudo nginx -t, sudo systemctl reload nginx i sudo certbot --nginx -d status.example.com.
Warto wiedzieć
- Prosimy ustawić aplikację tak, aby nasłuchiwała wyłącznie na
127.0.0.1, a nie na wszystkich adresach. Dzięki temu nikt nie ominie Państwa proxy. - Wiele aplikacji musi wiedzieć, pod jakim adresem jest dostępnych, np. poprzez ustawienie
DOMAINlubN8N_HOST. Prosimy wpisać tam adres https. - Panel administracyjny, który nie jest przeznaczony dla wszystkich, warto dodatkowo zabezpieczyć: hasłem w samej aplikacji, weryfikacją dwuetapową lub udostępniając go wyłącznie przez tunel SSH (zob. Plik konfiguracyjny SSH: logowanie za pomocą krótkiej nazwy).
- Dodatkowe nagłówki bezpieczeństwa, takie jak HSTS, ustawia się za pomocą
headerw Caddy lubadd_headerw nginx. HSTS prosimy włączyć dopiero wtedy, gdy https działa poprawnie wszędzie.
