前陣子,盜連的問題,突然很嚴重。
所以只好想辦法來檔一下了。
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~~
0 comments:
張貼留言