Повечето self-hosted приложения слушат на локален порт като 127.0.0.1:3000 и говорят обикновен HTTP. Reverse proxy седи отпред на портове 80/443, терминира HTTPS с реален сертификат, и препраща трафика към този локален порт — давайки ти чист https://app.yourdomain.com и позволявайки ти да пуснеш няколко приложения зад един IP. Ето и двата чести начина.
Предпоставки
- Домейн с A запис, сочещ към IP-то на сървъра ти (изчакай DNS да се разпространи).
- Портове 80 и 443 отворени — виж как да конфигурираш UFW firewall.
- Приложението ти, работещо локално, напр. на
127.0.0.1:3000.
Опция A — Caddy (автоматичен HTTPS, един ред)
sudo apt install -y caddy
echo 'app.yourdomain.com { reverse_proxy 127.0.0.1:3000 }' | sudo tee /etc/caddy/Caddyfile
sudo systemctl restart caddy
Това е — Caddy получава Let's Encrypt сертификат за домейна и го подновява автоматично.
Опция B — nginx + Certbot
sudo apt install -y nginx certbot python3-certbot-nginx
Създай /etc/nginx/sites-available/app:
server {
listen 80;
server_name app.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}
Включи го и добави HTTPS:
sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d app.yourdomain.com
Certbot редактира конфигурацията, за да обслужва HTTPS, и настройва авто-подновяване.
Честни предупреждения
- DNS и портове са обичайните провали. A записът трябва да сочи тук и да се е разпространил, а 80/443 трябва да са достижими, или издаването на сертификат се проваля. И двата инструмента опитват пак, щом това е поправено.
- Излагай само това, което възнамеряваш. Дръж приложението вързано към
127.0.0.1, така че да е достижимо само през proxy-то, не директно. - HTTPS се нуждае от домейн, не голо IP — Let's Encrypt издава за имена.
Следващи стъпки
Reverse proxy е това, което позволява на една машина да обслужва много неща — виж хостване на няколко услуги зад един IP. Пускаш приложението в контейнер? Започни с как да инсталираш Docker. За да държиш самото приложение живо през рестарти и сривове, виж как да създадеш systemd услуга.
Коментари
Още няма коментари. Бъди първият.