EQVPS

Cách thiết lập reverse proxy nginx với HTTPS

Đặt một tên miền gọn gàng và HTTPS tự động phía trước bất kỳ ứng dụng nào lắng nghe trên một cổng cục bộ. Hai cách: nginx với Certbot, hoặc Caddy cho TLS tự động trong một dòng. Từng bước, kèm cấu hình sẵn sàng để chép.

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

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

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.

FAQ

Reverse proxy là gì và tại sao tôi cần nó?

Ứng dụng của bạn thường lắng nghe trên một cổng cục bộ như 127.0.0.1:3000. Reverse proxy đứng phía trước trên cổng 80/443, kết thúc HTTPS và chuyển tiếp yêu cầu đến cổng cục bộ đó. Nó cho bạn một tên miền gọn gàng, một chứng chỉ TLS hợp lệ, và khả năng chạy nhiều ứng dụng sau một IP duy nhất — mà ứng dụng không phải tự làm bất kỳ điều gì trong số đó.

nginx hay Caddy — nên chọn cái nào?

Caddy là cách nhanh nhất: nó tự động lấy và gia hạn chứng chỉ Let's Encrypt, và một proxy HTTPS hoạt động chỉ là một dòng cấu hình. nginx phổ biến hơn và linh hoạt hơn, nhưng với TLS bạn phải thêm Certbot. Muốn HTTPS với ít phiền phức nhất thì dùng Caddy; đã biết nginx hoặc cần các tính năng của nó thì dùng nginx.

Tôi có cần tên miền không?

Để có chứng chỉ HTTPS đáng tin cậy, có — Let's Encrypt cấp chứng chỉ cho tên miền, không cho IP trần. Trỏ một bản ghi A đến IP máy chủ của bạn, chờ DNS lan truyền, rồi proxy có thể lấy chứng chỉ cho tên đó.

Cần mở những cổng nào?

80 và 443 đầu vào. Cổng 80 dùng cho thử thách chứng chỉ ban đầu và chuyển hướng sang HTTPS; 443 phục vụ lưu lượng đã mã hóa. Mở cả hai trong tường lửa của bạn (xem hướng dẫn UFW) và đảm bảo không có gì khác đang chiếm chúng.

Tại sao việc cấp chứng chỉ thất bại?

Hầu như luôn là DNS hoặc cổng. Bản ghi A của tên miền phải trỏ đến máy chủ này và đã lan truyền, còn cổng 80/443 phải tới được (mở trong tường lửa, không bị chặn ở phía trên). Sửa hai điều đó thì việc cấp thành công; cả Caddy lẫn Certbot đều thử lại.

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.