თვითჰოსტინგის აპლიკაციების უმეტესობა უსმენს ლოკალურ პორტს, მაგალითად 127.0.0.1:3000, და საუბრობს უბრალო HTTP-ზე. უკუპროქსი დგას წინ პორტებზე 80/443, ასრულებს HTTPS-ს ნამდვილი სერტიფიკატით და გადასცემს ტრაფიკს იმ ლოკალურ პორტს — გაძლევთ სუფთა https://app.yourdomain.com-ს და საშუალებას, გაუშვათ რამდენიმე აპლიკაცია ერთი IP-ის უკან. აი, ორივე გავრცელებული გზა.
წინაპირობები
- დომენი A ჩანაწერით, რომელიც მიუთითებს თქვენი სერვერის IP-ზე (დაელოდეთ DNS გავრცელებას).
- პორტები 80 და 443 ღია — იხ. როგორ დავაყენოთ UFW ფაიერვოლი.
- თქვენი აპლიკაცია მუშაობს ლოკალურად, მაგალითად
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-ზე, რომ ის მისაწვდომი იყოს მხოლოდ პროქსის გავლით და არა პირდაპირ. - HTTPS-ს სჭირდება დომენი, და არა შიშველი IP — Let's Encrypt გასცემს სახელებზე.
შემდეგი ნაბიჯები
უკუპროქსი სწორედ ის არის, რაც ერთ სერვერს ბევრი რამის მომსახურების საშუალებას აძლევს — იხ. რამდენიმე სერვისის თვითჰოსტინგი ერთი IP-ის უკან. აპლიკაციას კონტეინერში უშვებთ? დაიწყეთ როგორ დავაინსტალიროთ Docker-ით. იმისათვის, რომ თავად აპლიკაცია გადაურჩეს გადატვირთვებსა და ავარიებს, იხ. როგორ შევქმნათ systemd სერვისი.
კომენტარები
ჯერ არ არის კომენტარები. იყავით პირველი.