רוב האפליקציות בהתארחות עצמית מאזינות על פורט מקומי כמו 127.0.0.1:3000 ומדברות HTTP רגיל. reverse proxy יושב מלפנים על פורטים 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כך שהיא נגישה רק דרך ה-proxy, לא ישירות. - HTTPS צריך דומיין, לא IP חשוף — Let's Encrypt מנפיקה לשמות.
צעדים הבאים
reverse proxy הוא מה שמאפשר למכונה אחת להגיש הרבה דברים — ראו אחסון עצמי של מספר שירותים מאחורי IP אחד. מריצים את האפליקציה בקונטיינר? התחילו עם איך להתקין Docker. כדי לשמור את האפליקציה עצמה בחיים דרך reboots וקריסות, ראו איך ליצור שירות systemd.
תגובות
אין עדיין תגובות. היו הראשונים.