Cách sử dụng Nginx Redirect để chuyển hướng truy cập
Nginx (phát âm là engine-x) là một web server HTTP có mã nguồn mở hiệu suất cao. Nó hoạt động như một proxy ngược hoặc proxy POP3/IMAP. Đây là web server phổ biến thứ ba và nổi tiếng với hiệu suất nâng cao, dễ sử dụng; cấu hình ổn định và tiêu tốn tối thiểu tài nguyên. Đó là lý do tại sao trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng Nginx redirect để chuyển hướng traffic theo các mục tiêu khác nhau.
Theo Datanyze, Nginx chiếm 32% thị phần trên thị trường web server. Nó hỗ trợ rất nhiều trang web nổi tiếng như Github, Netflix, CloudFlare, Hulu, Airbnb, Hulu, WordPress và nhiều trang web khác.
Nginx Redirect trên Linux
Khả năng chuyển tiếp URL của trang web đến một địa chỉ hoặc một nơi khác dựa trên tiêu chí riêng là tính năng thiết yếu của web server Nginx. Redirect Nginx rất đơn giản và dễ cài đặt. Thông thường người dùng chọn một trang có xếp hạng SEO tốt. Chẳng hạn như chuyển từ CMS sang nền tảng khác. Điều này sẽ thay đổi hoàn toàn phần URL. Vì vậy, để giữ cho trang hiện tại ở vị trí SERP tốt, bạn có thể định tuyến URL cũ đến trang mới.
Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn tạo hai loại Nginx redirect: vĩnh viễn và tạm thời. Hãy nhớ cài đặt Nginx trên VPS của bạn trước.
Giải thích về Nginx tạm thời và vĩnh viễn
Redirects tạm thời mang lại lợi ích nếu vị trí trang cần thay đổi từ vị trí này sang vị trí tạm thời khác. Redirects sẽ phản hồi lại mã 302 để chỉ định dịch chuyển tạm thời của trang.
Nếu trang web đang được bảo trì, redirects tạm thời được dùng để thông báo cho người dùng rằng trang web này hiện không khả dụng. Ví dụ khác, khi bạn thực hiện redirect tạm thời của một trang không hoàn chỉnh; bạn cần liên kết trang đó đến nơi khác hoặc đến trang chính:
Visitor–> Website Page–> Website is under maintenance
Mặt khác, redirect Nginx vĩnh viễn sẽ báo cho trình duyệt web về liên kết vĩnh viễn trang hoặc tên miền cũ với một vị trí hoặc tên miền mới. Để đánh dấu sự thay đổi này, redirect sẽ phản hồi mã 301 để chỉ định chuyển động vĩnh viễn của trang. Các loại redirects này rất hữu ích khi người dùng muốn thay đổi tên miền và không còn muốn truy cập trình duyệt.
Ví dụ: khi bạn muốn thay đổi tên miền trang web hoặc tạo trang mới thay thế trang cũ:
Visitor–> Click www.thuexehagiang.com/home -> Redirected to www.thuexehagiang.com/home1
Mẹo: Xem thêm Cấu hình nhiều subdomain trên NGINX + SSL Let's Encrypt
Redirect trang trong Nginx
Nhớ rằng bạn cần truy cập VPS của mình trước thông qua SSH.
Trong Nginx, hầu hết redirects có thể thực hiện với tính năng viết lại. Đây là tính năng mặc định và có sẵn trên bản cài đặt của Nginx, và có thể tạo ra cả hai loại Nginx redirect – vĩnh viễn và tạm thời. Ở dạng đơn giản, có tối thiểu hai trường hợp, là URL cũ và URL mới.
Redirect các trang đến vị trí tạm thời hoặc vĩnh viễn trên web server Nginx thật đơn giản và dễ dàng. Truy cập /etc/nginx/sites-enabled/default
, dán mã code sau đây, đồng thời thay đổi các biến cho phù hợp với nhu cầu của bạn:
Ví dụ
Location path_pattern {
rewrite ^/oldURL$ https://www.domainone.com/newURL redirect;
}
Nếu bạn muốn redirect trang này sang liên kết khác một cách vĩnh viễn, hãy dùng “permanent” thay cho “redirect” trên các lệnh ở trên. Bên cạnh đó, path_parent thường là /index.html.
Nginx Redirect một tên miền
Để redirect tên miền sang tên miền khác, dùng lệnh dưới đây trong terminal:
Ví dụ
server {
listen 80;
hostname vzn.vn www.vzn.vn;
rewrite ^ http://www.google.com$request_uri? permanent;
}
Ở đây chúng tôi sử dụng hai tên miền. Tên miền mà bạn muốn redirect – www.vzn.vn và tên miền mới – www.google.com
Redirect Nginx từ HTTP sang HTTPS (SSL)
HTTP và HTTPS sử dụng các cổng khác nhau – HTTP cổng 80 và HTTPS cổng 443. DÙng HTTPS sẽ lợi thế hơn vì nó bảo vệ bạn khỏi các cuộc tấn công của MITM nhằm chiếm quyền điều khiển phiên làm việc. Hãy nhớ rằng, để phương thức này hoạt động, bạn cần phải thiết lập SSL. Vì vậy, để bảo vệ tất cả thông tin được gửi giữa bạn và khách truy cập, redirect tất cả các yêu cầu từ HTTP sang HTTPS sẽ có ích. Do đó, chúng ta có thể thêm sửa đổi này vào cùng một tệp:
Ví dụ
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
Giờ thì tất cả lưu lượng truy cập cho server mặc định HTTP sẽ redirects đến HTTPS.
Nginx Redirect sang các trang web cụ thể
Sẽ cần thiết nếu bạn dùng nhiều trang web hoặc apps khác nhau và chỉ muốn redirect một trang web duy nhất. Làm theo các bước sau đây:
Ví dụ
server {
listen 80;
server_name vzn.vn;
return 301 https://vzn.vn$request_uri;
}
Ở đây, chúng tôi đang redirect trang web http://www.vzn.vn sang https://www.vzn.vn
Redirect từ www sang non-www
Nhiều lúc bạn muốn khách truy cập vào tên miền đơn giản của trang web như vzn.vn thay vì www.vzn.vn. Mặc dù có nhiều tùy chọn để redirect từ www sang non-www trong Nginx, đây là một trong những cách dễ làm:
Ví dụ
server {
server_name www.vzn.vn;
return 301 $scheme://devisers.in$request_uri;
}
Quan trọng: Đây là Redirect vĩnh viễn hoặc “Redirect 301”.
Khởi động lại web server Nginx để thực hiện bằng lệnh:
Ví dụ
sudo systemctl restart Nginx
Nếu muốn chuyển hướng từ non-www sang www, chỉ cần thay thế URL trang web được đề cập trong lệnh trên. Thay thế www.vzn.vn bằng vzn.vn và ngược lại.
Kết luận
Nginx là một trong những web server mạnh và dễ sử dụng nhất, cho phép thực hiện redirect tạm thời và vĩnh viễn như mô tả ở trên.
Bây giờ bạn đã biết cách redirect Nginx từ HTTP sang HTTPS, từ www sang non-www hoặc ngược lại. Bạn cần đảm bảo redirect một cách chính xác, vì nếu không sẽ ảnh hưởng đến thứ hạng tìm kiếm của bạn. Với sự trợ giúp của redirects chính xác, bạn có thể tận dụng các trang web hiện tại trong quá trình thay đổi cấu trúc trang được yêu cầu.
Chúng tôi hy vọng hướng dẫn Nginx Redirect này có thể giúp ích cho bạn! Hẹn gặp lại trong bài viết tiếp theo.