Cách chuyển hướng www thành không có www với Nginx trên Ubuntu 14.04
Khi bạn cài đặt trang web hoặc ứng dụng của bạn và chạy sau một domain , bạn cũng nên cho phép user của bạn truy cập vào nó thông qua domain thuần túy và domain phụ www . Nghĩa là, họ sẽ có thể truy cập domain của bạn có hoặc không có “ www. Tiền tố ”, ví dụ:example.com
hoặc www.example.com
, trong trình duyệt web và được trình bày với cùng một nội dung. Mặc dù có nhiều cách khác nhau để cài đặt điều này, nhưng giải pháp tốt nhất, đảm bảo tính nhất quán và cân nhắc SEO, là chọn domain bạn thích, đơn giản hoặc www và chuyển hướng domain kia đến domain ưa thích. Loại chuyển hướng này được gọi là Chuyển hướng vĩnh viễn hoặc “chuyển hướng 301” và có thể dễ dàng cài đặt bằng cách cấu hình đúng các bản ghi tài nguyên DNS và phần mềm web server của bạn. Hướng dẫn này sẽ chỉ cho bạn cách chuyển hướng URL có www thành không phải www, ví dụ: www.example.com
thành example.com
, với Nginx trên Ubuntu 14.04. Ta cũng sẽ chỉ cho bạn cách chuyển hướng theo hướng khác, từ URL không phải www sang www . Phiên bản CentOS 7 của hướng dẫn này có sẵn tại đây .
Nếu bạn muốn thực hiện kiểu chuyển hướng này với Apache làm web server của bạn , thay vào đó bạn nên làm theo hướng dẫn này: Cách Chuyển hướng www thành không có www với Apache trên Ubuntu 14.04 .
Yêu cầu
Hướng dẫn này giả định bạn có quyền superuser, tức là sudo
hoặc root, trên server đang chạy Nginx. Nếu bạn chưa cài đặt , hãy làm theo hướng dẫn này: Cài đặt server ban đầu trên Ubuntu 14.04 .
Giả định bạn đã cài đặt Nginx. Nếu bạn chưa có cài đặt này, có một số hướng dẫn về chủ đề này dưới thẻ Nginx .
Bạn phải có thể thêm các bản ghi vào DNS đang quản lý domain của bạn. Nếu bạn chưa có domain , bạn có thể mua một domain từ công ty đăng ký domain và quản lý domain đó bằng DNS của công ty đăng ký domain hoặc DNS của DigitalOcean . Trong hướng dẫn này, ta sẽ sử dụng DNS DigitalOcean để tạo các bản ghi cần thiết.
Hãy bắt đầu bằng cách cấu hình các bản ghi DNS của bạn.
Cấu hình bản ghi DNS
Để cài đặt chuyển hướng mong muốn, www.example.com
đến example.com
hoặc ngược lại, bạn phải có bản ghi A cho mỗi tên.
Mở bất kỳ thứ gì bạn sử dụng để quản lý DNS của bạn . Đối với ví dụ của ta , ta sẽ sử dụng DNS DigitalOcean .
Nếu một bản ghi domain ( còn gọi là vùng) chưa tồn tại, hãy tạo một bản ghi ngay bây giờ. Tên server lưu trữ phải là domain của bạn, ví dụ: example.com
và địa chỉ IP phải được đặt thành địa chỉ IP công cộng của server Nginx của bạn. Thao tác này sẽ tự động tạo bản ghi A trỏ domain của bạn đến địa chỉ IP mà bạn đã chỉ định. Nếu bạn đang sử dụng một hệ thống khác để quản lý domain của bạn , bạn có thể cần thêm hệ thống này theo cách thủ công.
Tiếp theo, thêm một bản ghi A khác có “www” làm tên server (hoặc “ www.example.com ” nếu một phần domain phụ không hoạt động) và chỉ định cùng một địa chỉ IP.
Khi bạn đã tạo cả hai bản ghi, nó sẽ trông giống như sau:
Lưu ý: Điều này cũng sẽ hoạt động với các bản ghi CNAME, miễn là bản ghi A của tên chuẩn đề cập đến địa chỉ IP của web server Nginx của bạn.
Bây giờ server của bạn có thể truy cập được thông qua domain www và không phải www, nhưng ta vẫn cần cài đặt chuyển hướng. Ta sẽ làm điều đó ngay bây giờ.
Cấu hình chuyển hướng Nginx
Để thực hiện chuyển hướng 301, bạn phải thêm khối server Nginx mới trỏ đến khối server ban đầu của bạn.
Mở cấu hình khối server Nginx của bạn trong editor . Ta sẽ sử dụng file cấu hình mặc định, /etc/nginx/sites-enabled/default
, trong ví dụ của ta :
sudo vi /etc/nginx/sites-enabled/default
Khối server ban đầu của bạn đã được xác định. Tùy thuộc vào hướng bạn muốn chuyển hướng, hãy sử dụng một trong các tùy chọn sau.
Tùy chọn 1: Chuyển hướng www thành không phải www
Nếu bạn muốn chuyển hướng user từ www đến một domain thuần túy, không phải www, hãy chèn cấu hình sau:
server { server_name www.example.com; return 301 $scheme://example.com$request_uri; }
Lưu và thoát. Điều này cấu hình Nginx để chuyển hướng các yêu cầu từ “ www.example.com ” đến “example.com”. Lưu ý phải có một khối server khác xác định web server không phải www của bạn.
Để các thay đổi có hiệu lực, hãy khởi động lại Nginx:
sudo service nginx restart
Lưu ý nếu bạn đang sử dụng HTTPS, chỉ thị listen
phải được đặt thành cổng 443
thay vì 80
.
Sử dụng lệnh curl này đảm bảo rằng domain không phải www chuyển hướng đến domain www (thay thế phần được đánh dấu bằng domain thực của bạn):
curl -I http://www.example.com
Bạn sẽ nhận được phản hồi 301 Moved Permanently
, hiển thị vị trí chuyển hướng không phải www, như sau:
Output:HTTP/1.1 301 Moved Permanently Server: nginx/1.4.6 (Ubuntu) Date: Mon, 04 May 2015 18:20:19 GMT Content-Type: text/html Content-Length: 193 Connection: keep-alive Location: http://example.com/
Tất nhiên, bạn nên truy cập domain của bạn trong trình duyệt web (www và không phải www) đảm bảo .
Tùy chọn 2: Chuyển hướng không phải www sang www
Nếu bạn muốn chuyển hướng user từ domain thuần túy, không phải www sang domain www, hãy thêm khối server này:
server { server_name example.com; return 301 $scheme://www.example.com$request_uri; }
Lưu và thoát. Điều này cấu hình Nginx để chuyển hướng các yêu cầu từ “example.com” đến “ www.example.com ”. Lưu ý phải có một khối server khác xác định web server www của bạn.
Để các thay đổi có hiệu lực, hãy khởi động lại Nginx:
sudo service nginx restart
Lưu ý nếu bạn đang sử dụng HTTPS, chỉ thị listen
phải được đặt thành cổng 443
thay vì 80
.
Sử dụng lệnh curl này đảm bảo rằng domain không phải www chuyển hướng đến domain www (thay thế phần được đánh dấu bằng domain thực của bạn):
curl -I http://example.com
Bạn sẽ nhận được phản hồi 301 Moved Permanently
, hiển thị vị trí chuyển hướng www, như sau:
Output:HTTP/1.1 301 Moved Permanently Server: nginx/1.4.6 (Ubuntu) Date: Mon, 04 May 2015 18:20:19 GMT Content-Type: text/html Content-Length: 193 Connection: keep-alive Location: http://www.example.com/
Tất nhiên, bạn nên truy cập domain của bạn trong trình duyệt web (www và không phải www) đảm bảo .
Kết luận
Đó là nó! Chuyển hướng vĩnh viễn Nginx của bạn hiện đã được cấu hình đúng cách và user của bạn có thể truy cập web server của bạn thông qua domain không phải www và www của bạn.
Các tin liên quan
Cách chuyển hướng www sang không có www với Nginx trên CentOS 72015-05-04
Cách triển khai ứng dụng Rails với Puma và Nginx trên Ubuntu 14.04
2015-04-01
Cách triển khai ứng dụng Rails với Unicorn và Nginx trên Ubuntu 14.04
2015-03-26
Cách cung cấp ứng dụng flask với Gunicorn và Nginx trên CentOS 7
2015-03-23
Cách cung cấp các ứng dụng Flask với Gunicorn và Nginx trên Ubuntu 14.04
2015-03-20
Cách cung cấp các ứng dụng Flask với uWSGI và Nginx trên CentOS 7
2015-03-20
Cách cung cấp các ứng dụng Flask với uWSGI và Nginx trên Ubuntu 14.04
2015-03-19
Cách thiết lập Django với Postgres, Nginx và Gunicorn trên Ubuntu 14.04
2015-03-18
Cách thiết lập Django với Postgres, Nginx và Gunicorn trên CentOS 7
2015-03-18
Cách cung cấp các ứng dụng Django với uWSGI và Nginx trên CentOS 7
2015-03-13