EQVPS

როგორ დავაყენოთ nginx-ის უკუპროქსი HTTPS-ით

დააყენეთ სუფთა დომენი და ავტომატური HTTPS ნებისმიერი აპლიკაციის წინ, რომელიც ლოკალურ პორტს უსმენს. ორი გზა: nginx Certbot-თან ერთად, ან Caddy ავტომატური TLS-ისთვის ერთ ხაზში. ნაბიჯ-ნაბიჯ, კოპირებისთვის მზა კონფიგურაციით.

თვითჰოსტინგის აპლიკაციების უმეტესობა უსმენს ლოკალურ პორტს, მაგალითად 127.0.0.1:3000, და საუბრობს უბრალო HTTP-ზე. უკუპროქსი დგას წინ პორტებზე 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-ის მოსამსახურებლად და აყენებს ავტომატურ განახლებას.

გულწრფელი გაფრთხილებები

შემდეგი ნაბიჯები

უკუპროქსი სწორედ ის არის, რაც ერთ სერვერს ბევრი რამის მომსახურების საშუალებას აძლევს — იხ. რამდენიმე სერვისის თვითჰოსტინგი ერთი IP-ის უკან. აპლიკაციას კონტეინერში უშვებთ? დაიწყეთ როგორ დავაინსტალიროთ Docker-ით. იმისათვის, რომ თავად აპლიკაცია გადაურჩეს გადატვირთვებსა და ავარიებს, იხ. როგორ შევქმნათ systemd სერვისი.

ხდკ

რა არის უკუპროქსი და რატომ მჭირდება?

თქვენი აპლიკაცია ჩვეულებრივ უსმენს ლოკალურ პორტს, მაგალითად 127.0.0.1:3000. უკუპროქსი დგას წინ პორტებზე 80/443, ასრულებს HTTPS-ს და გადასცემს მოთხოვნებს იმ ლოკალურ პორტს. ის გაძლევთ სუფთა დომენს, ვალიდურ TLS სერტიფიკატს და შესაძლებლობას, გაუშვათ რამდენიმე აპლიკაცია ერთი IP-ის უკან — და ეს ყველაფერი აპლიკაციამ თავად არ უნდა გააკეთოს.

nginx თუ Caddy — რომელი ავირჩიო?

Caddy ყველაზე სწრაფი გზაა: ის ავტომატურად იღებს და აახლებს Let's Encrypt სერტიფიკატებს, მომუშავე HTTPS პროქსი კი ერთი ხაზი კონფიგურაციაა. nginx უფრო ცნობილი და მოქნილია, მაგრამ TLS-ისთვის ამატებთ Certbot-ს. თუ HTTPS მინიმალური თავის ტკივილით გინდათ, აიღეთ Caddy; თუ nginx უკვე იცით ან მისი ფუნქციები გჭირდებათ, აიღეთ nginx.

დომენი მჭირდება?

სანდო HTTPS სერტიფიკატისთვის, დიახ — Let's Encrypt გასცემს სერტიფიკატებს დომენის სახელებზე და არა შიშველ IP-ებზე. მიმართეთ A ჩანაწერი თქვენი სერვერის IP-ზე, დაელოდეთ DNS გავრცელებას, შემდეგ პროქსი შეძლებს იმ სახელისთვის სერტიფიკატის მიღებას.

რომელი პორტები უნდა იყოს ღია?

შემომავალი 80 და 443. პორტი 80 გამოიყენება საწყისი სერტიფიკატის გამოწვევისა და HTTPS-ზე გადამისამართებისთვის; 443 ემსახურება დაშიფრულ ტრაფიკს. გახსენით ორივე თქვენს ფაიერვოლში (იხ. UFW-ის გზამკვლევი) და დარწმუნდით, რომ სხვა არაფერი უკვე არ იკავებს მათ.

რატომ ჩავარდება სერტიფიკატის გაცემა?

თითქმის ყოველთვის DNS ან პორტები. დომენის A ჩანაწერი უნდა მიუთითებდეს ამ სერვერზე და იყოს გავრცელებული, ხოლო პორტები 80/443 მისაწვდომი (ღია ფაიერვოლში, არ იყოს დაბლოკილი ზემოთ). გამოასწორეთ ეს ორი და გაცემა წარმატდება; Caddy და Certbot ორივე ხელახლა ცდის.

კომენტარები

ჯერ არ არის კომენტარები. იყავით პირველი.

დატოვეთ კომენტარი

კომენტარები მოდერირდება გამოჩენამდე.