12/08/2018, 15:49

Redirect HTTP traffic sang HTTPS trong nginx

Trong bài viết này mình sẽ viết hướng dẫn redirect HTTP traffic sang HTTPS trong nginx. Lý do chúng ta cần sử dụng HTTPS vì: Bảo mật: Đây là lý do chính và quan trọng nhất để sử dụng HTTPS, tất cả các kết nối giữa người dùng và server sẽ được mã hóa. Cảnh báo: Khi bạn kết nối đến một website ...

Trong bài viết này mình sẽ viết hướng dẫn redirect HTTP traffic sang HTTPS trong nginx. Lý do chúng ta cần sử dụng HTTPS vì:

  • Bảo mật: Đây là lý do chính và quan trọng nhất để sử dụng HTTPS, tất cả các kết nối giữa người dùng và server sẽ được mã hóa.
  • Cảnh báo: Khi bạn kết nối đến một website không sử dụng giao thức HTTPS, trình duyệt sẽ cảnh báo.
  • SEO: google sử dụng HTTPS là một trong các tiêu chí để xếp hạng rank cho website của bạn. Để sử dụng HTTPS, bạn sẽ phải cần chứng chỉ SSL từ các nhà cung cấp đáng tin cậy.

Để cấu hình redirect HTTP sang HTTPS trên nginx, ta cần tạo 3 block config: một cho HTTP, một cho HTTPS mà link không có www và cuối cùng cho HTTPS mà link có www:

Để redirect HTTP và HTTPS với non-www sang HTTPS www, sử dụng đoạn code sau:

#Lắng nghe traffic qua port 80 của giao thức HTTP và trả về thành HTTPS với domain có www
server {
  listen [::]:80;
  listen 80;
  server_name yourdomain.com www.yourdomain.com;
  # redirect http to https www
  return 301 https://www.yourdomain.com$request_uri;
}
#Lắng nghe traffic qua port 443 của giao thức HTTPS và trả về thành HTTPS với domain có www
server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  server_name yourdomain.com;
  # redirect https non-www to https www
  return 301 https://www.yourdomain.com$request_uri;
}
server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  server_name www.yourdomain.com;
}

ngoài ra để redirect từ HTTP và HTTPS www sang HTTPS non-www, ta sử dụng đoạn code sau:

#Lắng nghe traffic qua port 80 của giao thức HTTP và trả về thành HTTPS với domain không có www
server {
  listen [::]:80;
  listen 80
  server_name yourdomain.com www.yourdomain.com;
  # redirect http to https non-www
  return 301 https://yourdomain.com$request_uri;
}
#Lắng nghe traffic qua port 443 của giao thức HTTPS và trả về thành HTTPS với domain không có www
server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  server_name www.yourdomain.com;
  # redirect https non-www to https www
  return 301 https://yourdomain.com$request_uri;
}
server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  server_name yourdomain.com;
  # Other code
}
0