Глава 5 · 5.3
Приложение зад reverse proxy
Много приложения имат собствен малък уеб сървър на даден порт, например 3001 или 5678. Не отваряйте този порт към интернет. Вашият уеб сървър приема трафика на порт 443 с https и го препраща към приложението: това е reverse proxy.
С Caddy
Ако приложението слуша на самия сървър на порт 3001:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Caddy автоматично препраща правилните заглавни редове (като X-Forwarded-For и X-Forwarded-Proto) и websockets. Ако приложението работи в Docker до Caddy, използвайте името на контейнера, както в Вашата работна папка с compose.yaml, .env и Caddy.
С 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";
}
}
След това изпълнете sudo nginx -t, sudo systemctl reload nginx и sudo certbot --nginx -d status.example.com.
Полезно е да знаете
- Оставете приложението да слуша само на
127.0.0.1, а не на всички адреси. Така никой не може да заобиколи Вашия proxy. - Много приложения трябва да знаят на какъв адрес са достъпни, например чрез настройка като
DOMAINилиN8N_HOST. Въведете там https адреса. - Административен панел, който не е предназначен за всички, защитете допълнително: с парола в самото приложение, с двуфакторна проверка или само чрез SSH тунел (вижте SSH config: влизане с кратко име).
- Допълнителни заглавни редове за сигурност, като HSTS, задавате с
headerв Caddy или сadd_headerв nginx. Включете HSTS едва когато https работи правилно навсякъде.
