1. Vì sao “có HTTPS” là chưa đủ?
Rất nhiều hệ thống rơi vào trạng thái:
Có HTTPS nhưng HTTP vẫn truy cập được
HTTP redirect không nhất quán
Website bị lỗi mixed content
Trình duyệt vẫn hiển thị cảnh báo bảo mật
Nguyên nhân là:
HTTPS chưa được cấu hình như một chuẩn bắt buộc, mà chỉ như một tuỳ chọn.
Trong môi trường production hiện nay:
HTTPS phải là mặc định duy nhất, HTTP chỉ tồn tại để redirect.
2. Mục tiêu cấu hình HTTPS chuẩn
Sau bài này, hệ thống cần đạt được:
Toàn bộ truy cập đều đi qua HTTPS
HTTP chỉ dùng để redirect sang HTTPS
Không xảy ra redirect loop
Không có mixed content
Cấu hình rõ ràng, dễ kiểm soát
Nguyên tắc:
Một domain – một chuẩn truy cập – một cách redirect.
3. Kiến trúc HTTP → HTTPS đúng cách
3.1. Mô hình chuẩn khuyến nghị
HTTP:
Không xử lý nội dung
Không cấu hình phức tạp
Chỉ làm một việc: redirect
HTTPS:
Phục vụ toàn bộ website
Có cấu hình đầy đủ
4. Cấu hình redirect HTTP → HTTPS chuẩn
4.1. Server block cho HTTP (port 80)
Ví dụ cấu hình chỉ để redirect:
Giải thích:
301: redirect vĩnh viễn (SEO-friendly)$host$request_uri: giữ nguyên domain và đường dẫn
Nguyên tắc:
Không đặt root, không đặt location phức tạp trong HTTP server block.
5. Cấu hình server block HTTPS chuẩn
Ví dụ HTTPS server block:
Ở bước này:
Chưa cấu hình PHP
Chưa cấu hình header nâng cao
Tập trung vào HTTPS đúng và ổn định
6. Chọn chuẩn www hay non-www và redirect đúng cách
6.1. Quyết định chuẩn duy nhất
Ví dụ chọn non-www (cntt.it) là chuẩn.
6.2. Redirect www → non-www (HTTPS)
Nguyên tắc:
Chỉ redirect ở một nơi duy nhất, tránh chồng redirect.
7. Tránh lỗi redirect loop – lỗi rất hay gặp
7.1. Nguyên nhân phổ biến
Redirect HTTP → HTTPS ở nhiều nơi
CMS (Drupal, WordPress) tự redirect
Proxy / CDN redirect thêm một lớp
Cấu hình if/return không rõ ràng
7.2. Cách phòng tránh
HTTP server block: chỉ redirect
HTTPS server block: không redirect vòng
Không dùng nhiều
iftrong NginxTest từng bước sau mỗi thay đổi
8. Xử lý mixed content
8.1. Mixed content là gì?
Mixed content xảy ra khi:
Website chạy HTTPS
Nhưng load tài nguyên HTTP (CSS, JS, image)
Trình duyệt sẽ:
Cảnh báo
Hoặc chặn nội dung
8.2. Cách xử lý
Dùng URL tương đối (
//hoặc/path)Cấu hình CMS sử dụng HTTPS tuyệt đối
Kiểm tra source code frontend
HTTPS chuẩn:
Không được phép tồn tại HTTP trong tài nguyên tải về.
9. Kiểm tra HTTPS sau khi cấu hình
9.1. Kiểm tra thủ công
Truy cập:
http://domain→ phải redirect sang HTTPShttps://domain→ hoạt động bình thường
Kiểm tra biểu tượng khóa trên trình duyệt
9.2. Kiểm tra bằng công cụ dòng lệnh
Kết quả mong đợi:
10. Những sai lầm phổ biến khi cấu hình HTTPS
Để cả HTTP và HTTPS cùng phục vụ nội dung
Redirect không nhất quán
Vừa redirect ở Nginx, vừa redirect ở CMS
Không test sau khi chỉnh
Những lỗi này khiến:
Website “có HTTPS” nhưng vẫn không an toàn và không ổn định.
11. Checklist HTTPS chuẩn production
HTTP chỉ dùng để redirect
HTTPS là chuẩn duy nhất
Không redirect loop
www / non-www thống nhất
Không có mixed content
Test đầy đủ trước khi áp dụng
12. Bài tiếp theo
Trong Bài 24, chúng ta sẽ tiếp tục hoàn thiện bảo mật Web Server:
Các lỗi SSL/HTTPS thường gặp và cách xử lý
Bài này sẽ tổng hợp:
Các lỗi thực tế hay gặp
Nguyên nhân gốc
Cách khắc phục an toàn cho production
- Đăng nhập để gửi ý kiến

