Cloud VPS

Nginx và HTTPS trên VPS: cấu hình và gia hạn TLS

Nginx có thể đặt trước ứng dụng trên VPS để phục vụ domain và HTTPS. Quá trình triển khai gồm DNS, đường tới upstream, chứng chỉ và gia hạn; một website mở được HTTPS hôm nay vẫn cần giám sát để không hết hạn sau này.

aigpu.vn
Ảnh minh họa: Nginx và HTTPS trên VPS: cấu hình và gia hạn TLS

Nginx có thể đặt trước ứng dụng trên VPS để phục vụ domain và HTTPS. Quá trình triển khai gồm DNS, đường tới upstream, chứng chỉ và gia hạn; một website mở được HTTPS hôm nay vẫn cần giám sát để không hết hạn sau này.

Điều kiện của ví dụ

  • VPS Ubuntu có sudo; Nginx đã cài theo nguồn phù hợp.
  • Domain bạn sở hữu trỏ đúng IP, kiểm tra cả A và AAAA.
  • Ứng dụng HTTP đang chạy tại 127.0.0.1:3000.
  • TCP 80/443 được mở phù hợp firewall và nhà cung cấp.
  • Không ghi đè site production mà chưa sao lưu cấu hình.

app.example.com là domain minh họa, thay bằng domain của bạn. Cấu hình dưới đây là nền tảng cho app HTTP; WebSocket, streaming và tải file lớn cần bổ sung theo yêu cầu riêng.

Bước 1: kiểm tra upstream

bash
sudo ss -lntp
curl -I http://127.0.0.1:3000

Nếu app không hỗ trợ HEAD, thử request GET phù hợp không tạo dữ liệu. Kiểm tra response và log trước khi thêm proxy; Nginx không sửa được ứng dụng chưa chạy hoặc listen sai địa chỉ.

Bước 2: tạo site HTTP

nginx
server {
    listen 80;
    server_name app.example.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;
    }
}

Lưu vào site riêng và kích hoạt theo layout của gói Nginx đã cài. Cấu hình chỉ có listen IPv4 trong ví dụ; nếu domain có AAAA cần thiết kế listener và firewall IPv6 đúng. Không xóa các site khác để tránh ảnh hưởng dịch vụ đang chạy.

bash
sudo nginx -t
sudo systemctl reload nginx

Chỉ reload sau khi kiểm tra thành công trên hệ dùng service nginx. Khi có proxy khác phía trước, phải cấu hình cách tin cậy forwarded header phù hợp; app không nên tin mọi header do client gửi trực tiếp.

Bước 3: cấp chứng chỉ

Cài Certbot và plugin Nginx theo hướng dẫn chính thức cho hệ điều hành, chọn một phương thức cài nhất quán. Ví dụ bên dưới dùng plugin --nginx, có thể chỉnh cấu hình site; sao lưu trước khi chạy.

bash
sudo certbot --nginx -d app.example.com
sudo nginx -t

Việc xác minh domain phải đáp ứng phương pháp challenge đã chọn. Nếu có CDN/proxy, AAAA sai hoặc cổng xác minh bị chặn, cần kiểm tra đường thực tế thay vì lặp yêu cầu cấp chứng chỉ nhiều lần.

Bước 4: gia hạn và nghiệm thu

bash
sudo certbot certificates
sudo certbot renew --dry-run
systemctl list-timers

Dry-run thử quy trình gia hạn nên có kết nối tới dịch vụ xác minh; không phải phép thử offline. Xác nhận timer/cron thực tế và cách Nginx nạp chứng chỉ sau gia hạn. Thêm kiểm tra hạn chứng chỉ từ phía client.

Triệu chứngĐiểm kiểm tra
502Upstream dừng, port hoặc địa chỉ sai
TLS không hợp lệDomain, certificate chain, hạn và server block
HTTP đi sai siteserver_name và site mặc định
Upload thất bạiLimit proxy và ứng dụng
Stream/WebSocket lỗiHeader, timeout và buffering theo app

Bảo mật và xử lý thay đổi

Giữ private key chứng chỉ với quyền phù hợp, không đưa vào repo. HTTPS bảo vệ đường truyền nhưng không thay authorization, cập nhật hay backup. Nếu app chỉ cần được truy cập qua proxy, hạn chế cổng upstream từ Internet.

Khi deploy gây lỗi, lưu log, kiểm tra nginx -t, quay lại cấu hình trước đã xác nhận rồi reload. Không dùng một cấu hình TLS trên Internet mà chưa kiểm tra với bản Nginx/OpenSSL đang chạy.

Xem Cloud VPS. Khi yêu cầu hỗ trợ, gửi domain, sơ đồ CDN/proxy và lỗi đã che thông tin nhạy cảm; không gửi private key.

HTTPS có bảo vệ database khỏi truy cập trái phép không?

Không. Database cần network, credential và quyền riêng; HTTPS chỉ là một lớp bảo vệ đường truyền web.

Chứng chỉ có tự gia hạn sau khi cài Certbot không?

Cần kiểm tra timer/cron và thử renewal trên hệ thực tế. Không mặc định đã đúng chỉ vì lần cấp đầu thành công.

Cần GPU cho workload này?

NOC aigpu.vn hỗ trợ chọn GPU, VRAM và cấu hình phù hợp. PoC trong 24 giờ.

Bài viết liên quan

Ảnh minh họa: VPS chậm: chẩn đoán CPU, RAM, disk và networkCloud VPS

VPS chậm: chẩn đoán CPU, RAM, disk và network

VPS chậm không luôn do gói cấu hình quá nhỏ. Truy vấn database, thiếu RAM, chờ storage, giới hạn CPU hoặc mạng bên ngoài đều có thể tạo cùng triệu chứng. Hãy đo ở đúng thời điểm lỗi trước khi restart hoặc nâng cấp.

Đọc tiếp
Xem tất cả bài viết
GọiFBZaloSalesZaloOA