#

Cách cấu hình SSL và redirect từ HTTP sang HTTPS trên NGINX

 07/01/2022 - 08:00 Trịnh Duy Thanh

Khi bạn truy cập internet bằng trình duyệt Google Chrome, các trang web sử dụng HTTP sẽ bị đánh dấu là “Không an toàn”. Nhiều trình duyệt khác cũng đang làm giống như Google Chrome. Hôm nay, hãy cùng BKHOST tìm hiểu cách cấu hình SSL và redirect HTTP sang HTTPS cho website sử dụng NGINX Web Server.

Nếu bạn đang đọc bài viết này, chắc hẳn bạn đã có những kiến thức cơ bản về SSL Certificate và HTTPS rồi. Mặt khác, nếu bạn muốn tìm hiểu chi tiết hơn về SSL và HTTPS thì có thể xem thêm những nội dung sau đây:

  • SSL là gì? Vì sao cần cài đặt chứng chỉ SSL cho website?

Vì sao cần cấu hình giao thức https cho website chạy trên NGINX Web Server?

Vi sao can cau hinh https cho NGINX web server
Vì sao cần cấu hình https cho NGINX web server

Mặc định, website chạy trên NGINX sẽ vẫn ở giao thức http. Do đó, bạn cần có một số tùy chỉnh thì website mới có thể chuyển sang giao thức https. Ngay sau đây, BKHOST sẽ hướng dẫn bạn cấu hình https server cho máy chủ NGINX.

Đăng ký dịch vụ Email Sever chỉ từ 15k/tháng

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký dịch Email Server:

  • Giảm giá lên đến 30%.
  • Chỉ từ 15k/tháng.

Đăng ký ngay:

mail server

Hướng dẫn cấu hình HTTPS trên NGINX (Cài SSL cho website trên NGINX)

Trước tiên, bạn cần chuẩn bị chứng chỉ SSL. Bạn có thể đăng ký SSL Certificate ở rất nhiều nhà cung cấp uy tín cả ở Việt Nam và Quốc Tế. Tham khảo bảng giá DỊCH VỤ SSL tại BKHOST.

Sau khi đã sở hữu chứng chỉ SSL, hãy tiếp tục theo các bước sau đây:

Bước 1: Tìm file nginx.conf và mở nó lên, tìm đến đoạn code # HTTPS server. Đoạn code này sẽ có nội dung như sau:

# HTTPS server

# server {

# listen <span style="color: #339966;">443</span> ssl;

# server_name localhost;

# ssl_certificate cert.<span style="color: #0000ff;">pem</span>;

# ssl_certificate_key cert.<span style="color: #0000ff;">key</span>;

# ssl_session_cache shared:SSL:1m;

# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;

# ssl_prefer_server_ciphers on;

# location / {
# root html
# index index.<span style="color: #0000ff;">html</span> index.<span style="color: #0000ff;">htm</span>;
  }
}

Bước 2: Như bạn thấy, mặc định NGINX sẽ chưa mở HTTPS, bạn cần uncomment các đoạn code trên bằng cách bỏ đi dấu #. Lúc này đoạn code trong file của bạn sẽ như thế này:

# HTTPS server
server {
listen <span style="color: #339966;">443</span> ssl;
server_name localhost;
ssl_certificate cert.<span style="color: #0000ff;">pem</span>;
ssl_certificate_key cert.<span style="color: #0000ff;">key</span>;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.<span style="color: #0000ff;">html</span> index.<span style="color: #0000ff;">htm</span>;
   }
 }

Trong cấu hình trên chúng ta sử dụng lệnh listen 443 ssl; các kết nối HTTPS sẽ đi qua cổng 443.

Đoạn code:

ssl_certificate      cert.<span style="color: #0000ff;">pem</span>;
ssl_certificate_key  cert.<span style="color: #0000ff;">key</span>;

Có ý nghĩa rằng chúng ta sử dụng các file cert.pem và cert.key làm chứng chỉ SSL. Các file này cần nằm cùng một thư mục với file nginx.conf

Ngoài ra nếu bạn có URL của chứng chỉ SSL, bạn cũng có thể thay thế như sau:

ssl_certificate     www.example.com.chained.crt;
ssl_certificate_key www.example.com.key

Hãy nhớ đổi lại các URL ở trên bằng URL của bạn nhé.

Cấu hình redirect từ http sang https trên NGINX

Ở phần tiếp theo, chúng ta sẽ thực hiện chuyển hướng (redirect) các đường link HTTP sang HTTPS.

Redirect tất cả các domain trên server sang HTTPS

Chúng ta thêm đoạn cấu hình server như sau:

server {
   listen <span style="color: #ff0000;">80</span> default_server;
   server_name _;
   return <span style="color: #ff0000;">301</span> https://$host$request_uri;
}

Trong đoạn trên chúng ta sử dụng server_name _; để chuyển hướng tất cả các tên miền trên máy chủ.

Với return 301 https://$host$request_uri; chúng ta thông báo với trình duyệt rằng tất cả các đường link cần được chuyển hướng hoàn toàn sang HTTPS.

Redirect chỉ một domain chỉ định

Nếu chỉ muốn thay đổi một tên miền sang HTTPS, bạn sử dụng đoạn code sau:

server {
   listen 80;
   server_name yourdomain.com;
   return 301 https://yourdomain.com$request_uri;
}

Để server nhận các tùy chỉnh mà bạn vừa mới thay đổi, bạn cần khởi động lại máy chủ NGINX.

Cuối cùng hãy kiểm tra xem website của bạn đã chuyển từ HTTP sang HTTPS chưa nhé. Nếu bạn thấy có phần https kèm theo một ổ khóa ở đầu thanh URL của trình duyệt thì bạn đã thành công rồi đấy!

Cai dat SSL va redirect tu http sang https cho website chay tren NGINX
Cài đặt SSL và redirect từ http sang https cho website chạy trên NGINX

Như vậy, bạn đã biết cách cấu hình SSL và redirect từ http sang https cho website sử dụng NGINX Web Server. Nếu bạn còn bất kỳ thắc mắc nào, hãy chia sẻ trong phần bình luận, BKHOST sẽ cố gắng trả lời bạn sớm nhất có thể. Chúc bạn thành công!

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Đăng ký tên miền .VN tại BKHOST

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký tên miền .VN:

  • Giảm ngay 140k.
  • Miễn phí 100% dịch vụ khởi tạo tên miền .VN

Đăng ký ngay:

check domain vn

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger
Góp ý cho chúng tôi