CHƯƠNG 08 · Docker Production & CI/CD•BÀI 30 / 80

Nginx HTTPS, reverse proxy và exposure

TLS không thay thế authentication và bảo vệ application.

Vận hành◷ 4 phút đọc2/4 trong chương

Nắm bản chất

Reverse proxy có thể terminate TLS, phục vụ static files, route /api tới backend và đặt các giới hạn request cần thiết. Khi cấu hình nginx, cần chuyển tiếp Host, X-Forwarded-For và X-Forwarded-Proto có kiểm soát. Không tin headers từ client không đáng tin ngoài boundary của proxy.

TLS certificates có thể cấp qua ACME/Certbot hoặc managed load balancer, kèm renewal monitoring. Chỉ mở port 80/443 thật sự cần thiết; Postgres và Redis nằm trên private network.

Luồng hoạt động

Internet→TLS proxy→private API

Hãy tự giải thích mỗi mũi tên: dữ liệu, quyền hoặc tín hiệu nào được truyền qua bước này?

Lệnh & cấu hình mẫu

server {
    listen 443 ssl;
    server_name app.example.com;
    ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;
    location /api/ {
        proxy_pass http://127.0.0.1:8088;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Lệnh có placeholder hoặc phụ thuộc môi trường thì cần thay thông tin thực tế, kiểm tra quyền và chỉ thực hiện trên tài nguyên được phép.

Bài tập 10–20 phút

✳

Kiểm tra nginx -t và chỉ áp dụng config khi đúng domain/certificates. Dùng curl -I https://app.example.com nếu bạn sở hữu endpoint này.

Lỗi dễ mắc

!

Không publish unauthed Capstone API lên Internet chỉ vì đã bật HTTPS. Phải có authentication, rate limiting và threat modeling riêng.

Tự kiểm tra

HTTPS có tự đảm bảo một user được phép thực hiện POST /api/jobs không?Xem đáp án ↗

Không. HTTPS bảo vệ kênh truyền; authorization là kiểm soát riêng.

TÀI NGUYÊN ĐI KÈM

Học thêm qua lab

Có project thực hành đúng với chương này, kèm README và những giới hạn môi trường cần lưu ý.

↓ Tải mã nguồn thực hành chương 08
NGUỒN CHÍNH THỨC

Đối chiếu tài liệu gốc

Cú pháp và khả năng hỗ trợ có thể thay đổi theo phiên bản. Trước khi dùng Production, hãy kiểm tra tài liệu tương ứng.

Mở tài liệu chính thức ↗