Cấu hình Rule Nginx

Tác giả server360, Tháng chín 21, 2015, 10:05:27 PM

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cấu hình Rule Nginx


1. Giới thiệu.

Khác với Apache, Nginx không sử dụng tập tin .htaccess nên khi bạn cần Rewrite URL thì sẽ phải chuyển đổi qua các Rule của Webserver Nginx.

Trong bài viết này, mình sẽ đưa ra một số ví dụ các Rule của Nginx để sử dụng để Rewrite URL hoặc Redirect và một số cấu hình cần thiết khác.
2. Cấu hình Rule trong Nginx.
Khi sử dụng thì các bạn hãy thêm vào tập tin cấu hình của tên miền và tập tin cấu hình này thường nằm trong thư mục /etc/nginx/conf.d/

2.1. Canonical URL.

Đảm bảo Website của bạn được Search Engine Index một đường dẫn duy nhất từ www.mydomain.com qua mydomain.com.
Mã nguồn [Chọn]
if ($host = "www.mydomain.com") {
    rewrite ^ $scheme://mydomain.com$uri permanent;
}
location / {
    try_files $uri $uri/ @modx-rewrite;
}

mydomain.com -> www.mydomain.com
Mã nguồn [Chọn]
if ($host = "mydomain.com") {
    rewrite ^ $scheme://www.mydomain.com$uri permanent;
}
location / {
    try_files $uri $uri/ @modx-rewrite;
}

2.2. SSL cho Website.

Google hiện tại đang xem SSL như là một yếu tố trong xếp hạng, nếu các bạn sử dụng Website làm thương mại điện tử thì nên sử dụng với SSL.

Rule bên dưới sẽ Redirect tất cả yêu cầu từ HTTP qua HTTPS, trường hợp này giả sử bạn sử dụng www.domain.com làm tên miền chính.

Mã nguồn [Chọn]
# Tells the browser to always force SSL.
if ($scheme != "httpss") {
    rewrite ^ httpss://www.mydomain.com$uri permanent;
}
if ($host != "www.mydomain.com") {
    rewrite ^ httpss://www.mydomain.com$uri permanent;
}

2.3. Bắt buộc sử dụng SSL.

Bắt buộc phải sử dụng SSL với một đường dẫn bất kỳ:
Mã nguồn [Chọn]
set $redirect false;
if ($request_uri ~ ^/manager(\/)?$ ) {
    set $redirect true;
}
if ($scheme = httpss) {
    set $redirect false;
}
if ($redirect = true) {
    return 301 httpss://www.domain.com$request_uri;
}

2.4. Tối ưu Browser Caching.

Bằng việc sử dụng Browser Caching, Website của bạn sẽ được tải nhanh hơn rất nhiều kể từ sau lần truy cập đầu tiên.

Mã nguồn [Chọn]
location ~* \.(?:ico|css|js|jpe?g|png|gif|svg|pdf|mov|mp4|mp3|woff)$ {
    expires 7d;
    add_header Pragma public;
    add_header Cache-Control "public";
    gzip_vary on;
}

2.5. Giới hạn các địa chỉ IP truy cập.

Trong trường hợp các bạn muốn giới hạn các địa chỉ IP truy cập vào một đường dẫn bất kỳ, hãy sử dụng Rule như bên dưới đây.

Mã nguồn [Chọn]
location /manager/ {
    allow 192.168.1.1/24;
    allow 127.0.0.1;
    deny all;
}

2.6. Ngăn ngừa nhưng Website khác sử dụng hình ảnh.

Với đoạn mã dưới đây thì sẽ giúp các bạn hạn chế những Website khác sử dụng hình ảnh trực tiếp.

Mã nguồn [Chọn]
location ~ .(gif|png|jpe?g)$ {
     valid_referers none blocked .domain.com;
     if ($invalid_referer) {
        return   403;
    }
}

2.7. Sử dụng hình ảnh để thông báo lỗi.

Mã nguồn [Chọn]
location ~ .(gif|png|jpe?g)$ {
     valid_referers none blocked .domain.com;
     if ($invalid_referer) {
        rewrite (.*)\.(jpg|jpeg|png|gif)$ https://www.domain.com/images/warning.jpg;
    }
}

2.8. Bảo vệ thư mục bằng mật khẩu.

Đầu tiên, các bạn cần sử dụng công cụ này để tạo một tập tin .htpasswd, sau đó hãy dùng đoạn mã bên dưới đây, giả sử mình lưu ở /root/.htpasswd.

Mã nguồn [Chọn]
location /protectme/ {
    auth_basic "Restricted";
    auth_basic_user_file /root/.htpasswd;
}

2.9. Rewrite URL.

Ví dụ bên dưới giả sử bạn muốn Rewrite URL (chứ không phải redirect) đường dẫn https://domain.com/listing/123 thành https://domain.com/listing.php?id=123

Mã nguồn [Chọn]
rewrite ^/listing/(.*)$ /listing.php?id=$1 last;
(.*) ở đây là Regular Expression, đại diện cho bất kỳ ký tự nào. Nếu thêm Regular Expression thì các bạn có thể sử dụng tương ứng $2, $3...

Redirect URL cũ sang URL mới.
Mã nguồn [Chọn]
Redirect /someoldarticle.html sang /some/newarticle.html
rewrite ^/someoldarticle\.html /some/newarticle.html permanent;

2.10. Hiển thị nội dung thư mục.

Mã nguồn [Chọn]
location / {
    autoindex on;
}
Hoặc tắt đi.

Mã nguồn [Chọn]
location / {
    autoindex off;
}

Ngoài ra có một số công cụ tự động chuyển đổi sang các Rule của Nginx, các bạn có thể tham khảo thêm tại trang chủ của Nginx.

Similar topics (5)