HƯỚNG DẪN Cấu hình Nginx để block Hotlinking

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 10/12/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    1. Hotlinking là gì?
    Hotlinking là đặt link trực tiếp đến một file nào đó trên trang web của bạn mục đích để ăn cắp băng thông từ các máy chủ của bạn.
    Điều đó có nghĩa là gì? Nó có nghĩa là ai đó tạo ra một liên kết đến một trong những tập tin của bạn, nhưng nó sẽ được hiển thị trên trang web của họ. Kết quả là bạn sẽ phải trả tiền băng thông nhiều hơn vì điều này. Vì vậy, những gì bạn cần là để bảo vệ máy chủ nginx của bạn để ngăn chặn bất kỳ nỗ lực hotlinking.

    2. Cái hại của hotlink
    Lợi bất cập hại.
    a. Hại cho người bị hotlink
    Tại sao hotlink còn được gọi là bandwidth theft? Bởi vì khi đặt link trực tiếp tới file ảnh, video trên trang web của người khác, mỗi lần ai đó vào trang web của bạn, request sẽ được gửi thẳng tới server chứa trang web của người kia. Người có nội dung bị hotlink sẽ tốn băng thông một cách vô lý. Giả sử blog tớ một ngày có 200 visitor, nghĩa là khoảng 200 lần load một cái ảnh; mà ảnh đó bị hotlink ở trang web có 10000 visitor/ngày thì tự dưng băng thông tớ tốn gấp 6 lần mức hợp lý.

    b. Hại cho người đi hotlink
    File được hotlink không nằm trên server của bạn, nói cách khác là không thuộc quyền quản lý của bạn. Điều gì sẽ xảy ra nếu server của trang web kia down? Các file bị hotlink đương nhiên sẽ không hiển thị được.

    3. Cấu hình Nginx:
    Chỉnh sửa tập tin cấu hình virtual host Nginx của bạn. Thêm đoạn code này vào:
    Mã:
    location ~ \.(jpg|jpeg|png|gif|swf)$ {
        valid_referers server_names blocked *.domain.com;
        if ($invalid_referer) {
            return 404;
        }
    }
    
    Ta sẽ có đoạn code đầy đủ như sau:
    Mã:
    server{
         listen       80;
         server_name cai1.com  www.domain.com;
        root /usr/local/nginx/webdata/domain.com/;
         index index.html index.php;
    
    location ~ \.(jpg|jpeg|png|gif|swf)$ {
        valid_referers server_names blocked *.cai1.com;
        if ($invalid_referer) {
            return 404;
        }
    }
    }
    
    Bạn thay thể tên domain.com, thư mục root phù hợp với hệ thống của bạn. Làm xong hãy reload lại nginx để áp dụng các thay đổi:
    Mã:
    service nginx reload
    Ta cũng có thể thay đổi thông báo 404 bằng cách thông báo hình ảnh cho sinh động và dễ thấy:
    Sử dụng đoạn mã này:
    Mã:
    location ~ \.(jpg|jpeg|png|gif|swf)$ {
        valid_referers server_names blocked *.domain.com;
        if ($invalid_referer) {
            rewrite ^(.*)$ /images/access-denied.png redirect;
        }
    }
    
    location =/images/access-denied.png {
        root /usr/local/nginx/webdata/domain.com/;
    }
    
    Hoặc bạn có thể thay đổi thành thư mục chỉ định như /upload, /images...Làm như sau:
    Mã:
    location /images/ {
        valid_referers server_names blocked *.domain.com;
        if ($invalid_referer) {
            rewrite ^(.*)$ /images/access-denied.png break;
        }
    }
    location =/images/access-denied.png {
        root /usr/local/nginx/webdata/domain.com/;
    }
    
    Bạn có thể thay thế bất kì ảnh nào bạn muốn để thông báo cấm sử dụng trái phép. Nhớ thay thế domain.com, thư mục root phù hợp với hệ thống của bạn.
     

Chia sẻ trang này

Đang tải...