[Nginx] Cấu hình chuyển hướng truy cập HTTP sang HTTPS trong Nginx

Mình sẽ hướng dẫn các bạn cấu hình redirect chuyển hướng các kết nối HTTP Request sang HTTPS Request đối với 1 tên miền trên Web Server Nginx.

Trong trường hợp, website của bạn được nâng cấp chạy SSL/TLS chứng chỉ số thì điều quan trọng sau khi chuyển đổi lên HTTPS là chuyển hướng các kết nối đến đường link cũ HTTP vd http://cuongquach.com/ sẽ tự động chạy sang https://cuongquach.com. Điều này quan trọng vì trên các công cụ tìm kiếm như Google, Bing,.. trước đó đã lưu index site bạn với đường dẫn http nên bạn cần thực hiện điều này để người dùng khi truy cập link cũ vẫn sẽ thấy site bạn hoạt động tốt và trơn tru.

Với webserver Nginx thì để làm điều này thì vô cùng dễ dàng. Ở block dành cho kết nối HTTP “listen 80” của tên miền bạn muốn redirect, bạn chỉ cần thêm đoạn cấu hình trả mã status code HTTP 301 cùng địa chỉ Location mà bạn muốn chuyển hướng là được.

return 301 https://$host$request_uri


– Các bạn cần chỉnh sửa nội dung block “server” chứa thông tin tên miền của bạn, ở đây mình ví dụ là file cấu hình riêng từng vhost, còn các bạn có thể là file nội dung khác.

# vi /etc/nginx/vhost/cuongquach.com.conf
server {
 listen 80;
 server_name cuongquach.com www.cuongquach.com;
 return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name cuongquach.com www.cuongquach.com;
    ssl_certificate /etc/ssl/example.com-unified.crt;
    ssl_certificate_key /etc/ssl/example.com.key;
    ...
}
# /etc/init.d/nginx restart


Lúc này toàn bộ traffic đối với http://cuongquach.com/ sẽ tự động chuyển sang https://cuongquach.com/ . Với việc trả về HTTP status code 301, “301 redirect” là một phương pháp chuyển tiếp thông báo các trình duyệt và các công cụ tìm kiếm rằng trang webpage hoặc website đó đã được di dời hoàn toàn đến một địa chỉ mới. Thông thường một chuyển tiếp 301 sẽ có chứa địa chỉ web mới thay thế. Trình duyệt sẽ tự động theo chuyển tiếp 301 chuyển tới địa chỉ mới mà không cần đến sự can thiệp của người dùng.


– Chúng ta có thể kiểm tra như sau bằng công cụ curl :

# curl -I http://cuongquach.com/
HTTP/1.1 301 Moved Permanently
Server: Cuongqc
Date: Fri, 18 Mar 2016 07:14:36 GMT
Content-Type: text/html
Content-Length: 180
Connection: keep-alive
Location: https://cuongquach.com/
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Cache-Control: no-cache, no-store, max-age=0
Pragma: no-cache
Expires: 0

Nếu bạn thấy “HTTP/1.1 301 Moved Permanently” và Location “https://cuongquach.com/” tức bạn đã thành công rồi nhé.

Chào các bạn.

Previous article[DirectAdmin] Hướng dẫn đổi tên user trong Direct Admin sang tên mới
Next article[Firewall ASA] – Bài 4 : Static Route Lab
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !