前陣子,盜連的問題,突然很嚴重。

所以只好想辦法來檔一下了。

Nginx 提供了很簡單就可以防盜連的方法。

就簡簡單單的設定一下 nginx.conf 就好了。因為這些模組都是內建的。

方式如下:

    location /img/ {
        deny    192.168.1.1;
        allow   192.168.1.0/24;
        allow   10.1.1.0/16;
        deny    all;

        valid_referers none blocked *.my.domain dammit.com;
        if ($invalid_referer) {
            return 403;
        }
    }

referer 如果加上 none ,表示沒有 referer 也算是合法的。

可參考 

HttpAccessModule

HttpReferModule

而我的需求比較麻煩一點。我還要判斷那個user agent 就可以過。

所以我的寫法大概會是有一堆 if ,亂寫一個 sample 如下。

    location /img/ {
        set $flag true;
        valid_referers blocked *.my.domain dammit.com;
        if ($invalid_referer) {
            set $flag false;
        }
        if ($http_user_agent ~ (iPad|iPhone|iPod)) {
            set $flag true;
        }

        if ($flag = false) {
            return 403;
        }
        if ($flag = true) {
            # do something ...
        }
    }

因為 nginx  的 if 功能有點簡單…

 

所以只好寫一大堆的 if, 這樣子,我就可以自行判斷,在那些例外的狀況下,就一定讓他執行。

End~~

創作者介紹
創作者 Ching-Wei 的頭像
Ching-Wei

Ching Wei : This is My Life - 工作、攝影、旅遊

Ching-Wei 發表在 痞客邦 留言(0) 人氣()