EQVPS

איך להגדיר nginx reverse proxy עם HTTPS

שימו דומיין נקי ו-HTTPS אוטומטי מלפני כל אפליקציה שרצה על פורט מקומי. שתי דרכים: nginx עם Certbot, או Caddy ל-TLS אוטומטי בשורה אחת. שלב אחר שלב, עם התצורה שאתם יכולים להעתיק.

רוב האפליקציות בהתארחות עצמית מאזינות על פורט מקומי כמו 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. כדי לשמור את האפליקציה עצמה בחיים דרך reboots וקריסות, ראו איך ליצור שירות systemd.

שאלות נפוצות

מה זה reverse proxy ולמה אני צריך אחד?

האפליקציה שלכם בדרך כלל מאזינה על פורט מקומי כמו 127.0.0.1:3000. reverse proxy יושב מלפנים על פורטים 80/443, מסיים HTTPS, ומעביר בקשות לאותו פורט מקומי. הוא נותן לכם דומיין נקי, תעודת TLS תקפה, ואת היכולת להריץ כמה אפליקציות מאחורי IP אחד — שום דבר מזה האפליקציה שלכם לא צריכה לטפל בו בעצמה.

nginx או Caddy — מה כדאי לי לבחור?

Caddy הוא הנתיב המהיר ביותר: הוא משיג ומחדש תעודות Let's Encrypt אוטומטית, ו-proxy HTTPS עובד הוא שורת תצורה אחת. nginx מוכר יותר וגמיש יותר, אבל אתם מוסיפים Certbot ל-TLS. אם אתם רק רוצים HTTPS עם מינימום טרחה, השתמשו ב-Caddy; אם אתם כבר מכירים nginx או צריכים את התכונות שלו, השתמשו ב-nginx.

האם אני צריך דומיין?

לתעודת HTTPS מהימנה, כן — Let's Encrypt מנפיקה תעודות לשמות דומיין, לא ל-IP-ים חשופים. הצביעו רשומת A ל-IP של השרת שלכם, המתינו שה-DNS יתפשט, ואז ה-proxy יכול להשיג תעודה לאותו שם.

אילו פורטים צריכים להיות פתוחים?

80 ו-443 נכנסים. פורט 80 משמש לאתגר התעודה הראשוני ולהפניה ל-HTTPS; 443 מגיש את התעבורה המוצפנת. פתחו את שניהם בחומת האש שלכם (ראו מדריך UFW) וודאו ששום דבר אחר לא כבר קשור אליהם.

למה הנפקת התעודה נכשלת?

כמעט תמיד DNS או פורטים. רשומת ה-A של הדומיין חייבת להצביע לשרת הזה ולהתפשט, ופורטים 80/443 חייבים להיות נגישים (פתוחים בחומת האש, לא חסומים במעלה הזרם). תקנו את שני אלה וההנפקה מצליחה; Caddy ו-Certbot שניהם מנסים שוב.

תגובות

אין עדיין תגובות. היו הראשונים.

השאירו תגובה

התגובות עוברות מודרציה לפני שהן מופיעות.