Hầu hết các ứng dụng tự lưu trữ lắng nghe trên một cổng cục bộ như 127.0.0.1:3000 và nói HTTP thuần. Một reverse proxy đứng phía trước trên cổng 80/443, kết thúc HTTPS bằng một chứng chỉ thật và chuyển tiếp lưu lượng đến cổng cục bộ đó — cho bạn một https://app.yourdomain.com gọn gàng và cho phép chạy nhiều ứng dụng sau một IP duy nhất. Đây là hai cách phổ biến.
Điều kiện tiên quyết
- Một tên miền có bản ghi A trỏ đến IP máy chủ của bạn (chờ DNS lan truyền).
- Cổng 80 và 443 mở — xem cách thiết lập tường lửa UFW.
- Ứng dụng của bạn đang chạy cục bộ, ví dụ trên
127.0.0.1:3000.
Cách A — Caddy (HTTPS tự động, một dòng)
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
Chỉ vậy thôi — Caddy lấy một chứng chỉ Let's Encrypt cho tên miền và gia hạn tự động.
Cách B — nginx + Certbot
sudo apt install -y nginx certbot python3-certbot-nginx
Tạo /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;
}
}
Kích hoạt nó và thêm 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 sửa cấu hình để phục vụ HTTPS và thiết lập gia hạn tự động.
Cảnh báo thành thật
- DNS và cổng là những lỗi thường gặp. Bản ghi A phải trỏ về đây và đã lan truyền, còn 80/443 phải tới được, nếu không việc cấp chứng chỉ sẽ thất bại. Cả hai công cụ đều thử lại ngay khi điều đó được sửa.
- Chỉ phơi bày những gì bạn định. Giữ ứng dụng gắn với
127.0.0.1để nó chỉ có thể truy cập qua proxy, không phải trực tiếp. - HTTPS cần một tên miền, không phải IP trần — Let's Encrypt cấp cho tên.
Bước tiếp theo
Reverse proxy chính là thứ cho phép một máy chủ phục vụ nhiều thứ — xem tự lưu trữ nhiều dịch vụ sau một IP. Chạy ứng dụng trong một container? Bắt đầu với cách cài đặt Docker. Để chính ứng dụng sống sót qua các lần khởi động lại và sập, xem cách tạo một dịch vụ systemd.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.