November 6, 2015

Một số ví dụ rule Nginx

Khác với ApacheNginx không sử dụng file .htaccess nên khi bạn cần rewrite url sẽ phải convert qua rule của 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, redirect và một số cấu hình cần thiết khác.
Khi sử dụng, bạn hãy thêm vào file cấu hình conf của tên miền, với HocVPS Script thì các file cấu hình này thường nằm trong thư mục /etc/nginx/conf.d/

Canonical URLs

Đảm bảo website của bạn được search engine index một đường dẫn duy nhất.
www.mydomain.com -> mydomain.com
Redirect toàn bộ request từ www.mydomain.com sang mydomain.com
if ($host = "www.mydomain.com") {
    rewrite ^ $scheme://mydomain.com$uri permanent;
}
location / {
    try_files $uri $uri/ @modx-rewrite;
}
mydomain.com -> www.mydomain.com
Redirect toàn bộ request từ mydomain.com sang www.mydomain.com
if ($host = "mydomain.com") {
    rewrite ^ $scheme://www.mydomain.com$uri permanent;
}
location / {
    try_files $uri $uri/ @modx-rewrite;
}

SSL Sites

Google hiện tại đang sử dụng SSL là một yếu tố xếp hạng, nếu bạn sử dụng các site eCommerce, hãy sử dụng SSL.
Rule bên dưới sẽ redirect tất cả request sử dụng 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.
# Tells the browser to always force SSL.
if ($scheme != "https") {
    rewrite ^ https://www.mydomain.com$uri permanent;
}
if ($host != "www.mydomain.com") {
    rewrite ^ https://www.mydomain.com$uri permanent;
}

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ỳ:
set $redirect false; 
if ($request_uri ~ ^/manager(\/)?$ ) { 
    set $redirect true; 
} 
if ($scheme = https) { 
    set $redirect false; 
} 
if ($redirect = true) { 
    return 301 https://www.domain.com$request_uri; 
}

Tối ưu Browser Caching

Bằng việc sử dụng browser caching, website của bạn sẽ load nhanh hơn rất nhiều kể từ sau lần visit đầu tiê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;
}

Giới hạn IP truy cập

Trong trường hợp bạn muốn giới hạn IP truy cập vào một đường dẫn bất kỳ, hãy sử dụng rule bên dưới:
location /manager/ {
    allow 192.168.1.1/24;
    allow 127.0.0.1;
    deny all;
}

Ngăn những site khác sử dụng hình ảnh

Với đoạn code dưới, bạn sẽ hạn chế những site khác sử dụng hình ảnh trực tiếp:
location ~ .(gif|png|jpe?g)$ {
     valid_referers none blocked .domain.com;
     if ($invalid_referer) {
        return   403;
    }
}
Nếu bạn muốn thay vì báo lỗi mà hiển thị một hình ảnh khác, hãy  sử dụng code bên dưới:
location ~ .(gif|png|jpe?g)$ {
     valid_referers none blocked .domain.com;
     if ($invalid_referer) {
        rewrite (.*)\.(jpg|jpeg|png|gif)$ http://www.domain.com/images/warning.jpg;
    }
}

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

Đầu tiên, bạn cần sử dụng tool này để tạo file .htpasswd, sau đó dùng đoạn code bên dưới, giả sử mình lưu ở /root/.htpasswd
location /protectme/ {
    auth_basic "Restricted";
    auth_basic_user_file /root/.htpasswd;
}

Rewrite URL

Ví dụ bên dưới giả sử bạn muốn rewrite (không phải redirect) đường dẫn http://domain.com/listing/123 thành http://domain.com/listing.php?id=123
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, bạn sử dụng tương ứng $2$3

Redirect URL cũ sang URL mới

Redirect /someoldarticle.html sang /some/newarticle.html
rewrite ^/someoldarticle\.html /some/newarticle.html permanent;

Chạy WordPress ở Sub-folder

location /demo/ {
    try_files $uri $uri/ /demo/index.php?$args;
}

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

location / {
    autoindex on;
}
hoặc tắt đi
location / {
    autoindex off;
}
Ngoài ra có một số tool tự động convert sang rule Nginx bạn có thể tham khảo thêm nhưhttp://www.anilcetin.com/ hoặc http://labs.gidix.de/nginx/
nguon; hocvps.com

Related Posts:

  • CÁCH THIẾT LẬP NGINX LÀM PROXY CHO APACHE Cách đây cũng mấy ngày rồi mình có đăng một bài case study về việc tối ưu cho một website WordPress có hàng trăm user online cùng lúc với server chỉ có 2GB RAM và 1 CPU. Do có nhiều bạn yêu cầu nên ở bài này mình sẽ hướng dẫ… Read More
  • Cấu hình NGINX tối ưu cho Magento Cấu hình NGINX tối ưu cho Magento Magento là mã nguồn mở tốt nhất hiện nay để xây dựng website bán hàng (TMĐT), nếu bạn đang có ý định kinh doanh online trên Internet thì mình khuyên bạn nên bắt đầu ngay với Magento, … Read More
  • Một số ví dụ rule Nginx Khác với Apache, Nginx không sử dụng file .htaccess nên khi bạn cần rewrite url sẽ phải convert qua rule của 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, re… Read More
  • Auto Reload NGINX Requirements inotify-tools nginx Auto Reload NGINX NGINX Virtual Host [mitesh@Matrix ~]$ cat /etc/nginx/nginx.conf ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; A… Read More
  • Xử lý lỗi “502 Bad Gateway” trên Nginx Dạo gần đây có nhiều bạn thông báo hay bị lỗi 502 Bad Gateway khi sử dụng Nginx, mình đã tìm hiểu qua thông tin và có được một số giải pháp để xử lý vấn đề này như sau. – Mở file cấu hình Nginx: nano /etc/nginx/nginx.c… Read More

0 comments:

Post a Comment