Nginx redirect HTTP sang HTTPS

Redirect toàn bộ requests và traffic từ HTTP sang HTTPS trên Nginx

Hiện nay HTTPS đã trở thành một ưu tiên trong việc thiết kế website, năm ngoái Google cũng đã đưa ra thông báo sẽ ưu tiên các trang website sử dụng HTTPS và mới đây nhất là việc phiên bản Chrome tiếp theo sẽ hiện cảnh báo “không an toàn” trên ngay thanh địa chỉ nếu website không sử dụng giao thức HTTPS.

Có lẽ giao thức HTTP đã chính thức lỗi thời và sẽ được thay thế hoàn toàn bằng giao thức HTTPS trong tương lai. Do đó việc redirect toàn bộ traffic từ HTTP sang HTTPS là việc sớm muộn gì cũng sẽ phải làm.

Nginx là một trong những webserver phổ biến nhất hiện nay, trên môi trường VPS/Server thì Nginx thường được sử dụng mặc định như một reverse proxy hoặc một webserver chính thức thay cho Apache httpd.

Trường hợp bạn muốn redirect toàn bộ traffic đến mọi website trên server sang HTTPS trên Nginx thì sử dụng đoạn cấu hình sau, cách sử dụng là thêm trực tiếp vào file nginx.conf:

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name _;
	return 301 https://$host$request_uri;
}

Trường hợp nếu bạn chỉ muốn redirect toàn bộ các traffic đến trang thietkewebsitequangngai.com sang HTTPS thì sử dụng đoạn cấu hình sau, thêm vào trong file vhost.conf (hoặc file cấu hình virtual host bạn đang sử dụng):

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name thietkewebsitequangngai.com www.thietkewebsitequangngai.com;
	return 301 https://$server_name$request_uri;
}

Nếu bạn cần redirect cho nhiều website thì có thể thêm domain phía sau server_name, nếu redirect cho nhiều website thì nên tách phần cấu hình này ra một file khác và include vào trong file cấu hình chính sẽ tiện hơn trong việc chỉnh sửa và update.

Ưu điểm của đoạn cấu hình này là redirect triệt để toàn bộ traffic đến website sang HTTPS, có nghĩa là toàn bộ request đến các file tĩnh như file hình ảnh, file video, file âm thanh, file zip, … cũng đều được chuyển sang link HTTPS.

Và nhược điểm của cấu hình này cũng chính là việc mọi traffic đều được chuyển sang HTTPS nên các request đến các file tĩnh, thực chất là không cần HTTPS, cũng sẽ bị ép phải sử dụng HTTPS, làm tăng tải cho VPS/Server của bạn.

Sau khi cấu hình xong thì chỉ còn việc nữa là phải thử với “nginx -t” để test syntax và sau đó là “systemctl restart nginx” để khỏi động lại dịch vụ Nginx là xong.

Lưu ý trong trường hợp Nginx làm reverse proxy thì bạn cũng chỉ cần cấu hình ở Nginx thôi chứ không cần cấu hình trong Apache httpd làm gì.

Posted in Blog and tagged , , .