[Nginx] Cấu hình Nginx chuyển hướng truy cập URL www sang non-www và ngược lại

Cấu hình Nginx chuyển hướng truy cập
URL “www” sang “non-www” và ngược lại


Với bài hướng dẫn ngắn này, mình sẽ nói về việc cấu hình chuyển hướng tên miền URL www” -> “URL non-www” và ngược lại trên Web Server Nginx. Ví dụ như bạn phải quyết định sử dụng 1 loại tên miền, ví dụ như “www.cuongquach.com” hoặc “cuongquach.com” cho hoạt động website và SEO, thì bạn cần đảm bảo người dùng nếu có truy cập tên miền ví như “www.cuongquach.com” sẽ tự động chuyển hướng về “cuongquach.com”.

Nếu bạn sử dụng Web Server Nginx thì phần cấu hình đó sẽ vô cùng đơn giản như mình sẽ hướng dẫn sau đây.


I. Chuyển hướng (redirect) từ non-www URL sang www URL

Cách 1 :
– Tạo 1 block cấu hình tương ứng với tên miền dạng www/non-www mà bạn muốn chuyển hướng.
– Ở đây ta sẽ chuyển hướng “http://cuongquach.com” sang “http://www.cuongquach.com” .

server {
         server_name cuongquach.com;
         return 301 $scheme://www.cuongquach.com$request_uri;
}


– Lưu cấu hình lại. Kiểm tra và khởi động lại Nginx.

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# /etc/init.d/nginx restart


– Kiểm tra xem Nginx đã thực hiện nội dung chuyển hướng truy cập non-www sang www hay chưa bằng chương trình lệnh CURL. Nếu kết quả ra status code HTTP 301 và giá trị Location tương ứng tên miền www/non-www mà bạn mong muốn là ta đã thành công.

# curl -I cuongquach.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.0
Date: Fri, 26 Jun 2015 08:36:15 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://www.cuongquach.com/


Cách 2 :

– Sử dụng cấu hình “if” trong nginx.
– Không khuyến khích xài cách này, do cơ chế “if” của Nginx có những mặt xấu và bất lợi, nội dung này sẽ được nêu ở bài viết khác.

server {
          server_name cuongquach.com www.cuongquach.com;
          ...
          if ($host = 'cuongquach.com') {
                   rewrite ^/(.*)$ http://www.cuongquach.com/$1 permanent;
          }
}


– Kiểm tra cấu hình, khởi động lại dịch vụ Nginx và test curl như trên.


II. Chuyển hướng (redirect) từ www URL sang non-www URL

Cách 1 :
– Tạo 1 block cấu hình tương ứng với tên miền dạng www/non-www mà bạn muốn chuyển hướng.
– Ở đây ta sẽ chuyển hướng “http://www.cuongquach.com” sang “http://cuongquach.com” .

server {
          server_name www.cuongquach.com;
          return 301 $scheme://cuongquach.com$request_uri;
}


– Lưu cấu hình lại. Kiểm tra và khởi động lại Nginx.

# nginx -t
# /etc/init.d/nginx restart


– Kiểm tra xem Nginx đã thực hiện nội dung chuyển hướng truy cập non-www sang www hay chưa bằng chương trình lệnh CURL
.

# curl -I www.cuongquach.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.8.0
Date: Fri, 26 Jun 2015 08:36:15 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://cuongquach.com/


Cách 2 :

– Sử dụng cấu hình “if” trong nginx.

server {
          server_name cuongquach.com www.cuongquach.com;
          ...
          if ($host = 'www.cuongquach.com') {
                   rewrite ^/(.*)$ http://cuongquach.com/$1 permanent;
          }
}


– Kiểm tra cấu hình, khởi động lại dịch vụ Nginx và test curl như trên.


Như vậy là xong nội dung cấu hình Nginx chuyển hướng truy cập tên miền dạng www sang non-www và ngược lại. Chúc các bạn thành công.

Previous article[Firewall ASA] – Bài 6 : Kiểm soát lưu lượng mạng (Inspect Traffic)
Next article[DirectAdmin] Kiểm tra phiên bản các chương trình dịch vụ Direct Admin quản lý
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 !