แอปแบบ self-hosted ส่วนใหญ่ฟังอยู่บนพอร์ตในเครื่องอย่าง 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 คือสิ่งที่ทำให้เซิร์ฟเวอร์เดียวให้บริการได้หลายอย่าง — ดู การ self-host หลายบริการหลัง IP เดียว รันแอปในคอนเทนเนอร์อยู่ไหม? เริ่มที่ วิธีติดตั้ง Docker เพื่อให้แอปเองอยู่รอดผ่านการรีสตาร์ทและการล่ม ดู วิธีสร้างเซอร์วิส systemd
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ