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