EQVPS

Как да настроиш nginx reverse proxy с HTTPS

Сложи чист домейн и автоматичен HTTPS пред всяко приложение, работещо на локален порт. Два начина: nginx с Certbot, или Caddy за автоматичен TLS на един ред. Стъпка-по-стъпка, с конфигурацията, която можеш да копираш.

Повечето self-hosted приложения слушат на локален порт като 127.0.0.1:3000 и говорят обикновен HTTP. Reverse proxy седи отпред на портове 80/443, терминира HTTPS с реален сертификат, и препраща трафика към този локален порт — давайки ти чист https://app.yourdomain.com и позволявайки ти да пуснеш няколко приложения зад един IP. Ето и двата чести начина.

Предпоставки

Опция 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, и настройва авто-подновяване.

Честни предупреждения

Следващи стъпки

Reverse proxy е това, което позволява на една машина да обслужва много неща — виж хостване на няколко услуги зад един IP. Пускаш приложението в контейнер? Започни с как да инсталираш Docker. За да държиш самото приложение живо през рестарти и сривове, виж как да създадеш systemd услуга.

Въпроси

Какво е reverse proxy и защо се нуждая от такъв?

Приложението ти обикновено слуша на локален порт като 127.0.0.1:3000. Reverse proxy седи отпред на портове 80/443, терминира HTTPS, и препраща заявките към този локален порт. То ти дава чист домейн, валиден TLS сертификат, и възможността да пуснеш няколко приложения зад един IP — нищо от което приложението ти не трябва да се грижи само.

nginx или Caddy — кое да избера?

Caddy е най-бързият път: той получава и подновява Let's Encrypt сертификати автоматично, а работещ HTTPS proxy е един ред конфигурация. nginx е по-широко познат и гъвкав, но добавяш Certbot за TLS. Ако просто искаш HTTPS с минимална суетня, използвай Caddy; ако вече познаваш nginx или се нуждаеш от фичите му, използвай nginx.

Нужен ли ми е домейн?

За доверен HTTPS сертификат, да — Let's Encrypt издава сертификати за имена на домейни, не голи IP-та. Насочи A запис към IP-то на сървъра си, изчакай DNS да се разпространи, после proxy-то може да получи сертификат за това име.

Кои портове трябва да са отворени?

80 и 443 входящо. Порт 80 се използва за първоначалното сертификатно предизвикателство и за пренасочване към HTTPS; 443 обслужва криптирания трафик. Отвори и двата в firewall-а си (виж UFW ръководството) и се увери, че нищо друго вече не е вързано към тях.

Защо издаването на сертификат се проваля?

Почти винаги DNS или портове. A записът на домейна трябва да сочи към този сървър и да се е разпространил, а портове 80/443 трябва да са достижими (отворени в firewall-а, не блокирани нагоре). Поправи тези две и издаването успява; Caddy и Certbot и двата опитват пак.

Коментари

Още няма коментари. Бъди първият.

Остави коментар

Коментарите се модерират преди да се появят.