般我們使用nginx常用的就那么幾項,簡單代理、反向代理、代理轉發、負載均衡、重定向,等等。但是有時候又不得不進行另外的一些配置,下面介紹幾種"防盜"配置。
我們通過變量$http_user_agent來實現,變量$http_user_agent可以直接在location中引用。~*表示不區分大小寫的正則匹配,其實,大部分爬蟲都是Python爬蟲,通過python就可以過濾掉80%的Python爬蟲。
location / {
if ($http_user_agent ~* "python|curl|java|wget|httpclient|okhttp") {
return 503;
}
# 正常處理
# ...
}
在Nginx中屏蔽文件目錄,我們可以使用location指令和deny指令來實現。比如,通常我們會禁止訪問版本控制的目錄.git和.svn,另外,隱藏文件目錄我們也會拒絕訪問。
#通用備份和歸檔文件
location ~* "\.(old|orig|original|php#|php~|php_bak|save|swo|aspx?|tpl|sh|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rdf)$" {
deny all;
}
#拒絕訪問 .git 和 .svn 目錄
location ~ (.git|.svn) {
deny all;
}
#拒絕訪問隱藏文件和目錄
location ~ /\.(?!well-known\/) {
deny all;
}
我們通過使用valid_referers指令來定義合法的引薦網址列表,只有這些網址才能正常地獲取到圖片。如果請求沒有提供或者不屬于合法的引薦網址,直接返回404或者重定向到某個頁面。
location ~* \.(gif|jpg|png|swf|flv)$ {
root html;
valid_referers none blocked *.nginx.com;
if ($invalid_referer) {
rewrite ^/ www.nginx.cn;
# return 404;
}
}
跟上面一樣,我們也是通過使用valid_referers指令來定義合法的引薦網址列表,只有這些網址才能正常地獲取到圖片。但是,如果請求沒有提供或者不屬于合法的引薦網址,我們返回一張固定的圖片,讓它獲取不到真正的圖片。
location ~ \/public\/(css|js|img)\/.*\.(js|css|gif|jpg|jpeg|png|bmp|swf) {
valid_referers none blocked *.jslite.io;
if ($invalid_referer) {
rewrite ^/ http://wangchujiang.com/piratesp.png;
}
}
像base64編碼的網址、javascript eval()的網址,通常是攻擊來源,我們可以阻止它,不讓它訪問。
#base64編碼的網址
location ~* "(base64_encode)(.*)(\()" {
deny all;
}
#javascript eval() url
location ~* "(eval\()" {
deny all;
}
如果我們不想搜索引擎收錄我們的網站,我們可以通過向請求頭中添加X-Robots-Tag標簽,這個標簽會告訴搜索引擎爬蟲不要索引網站的任何內容。另外,可以配置我們的網站地圖robots.txt返回全部都不允許,這樣,搜索引擎爬蟲也不會索引我們的網站。
言
大家都知道現在很多站點下載資料都是要收費的,無論是積分還是金幣,想免費只能說很少很少了,那么這些網站是如何做到資源防盜鏈的呢?
這里推薦一款比較容易上手的神器,Nginx本身提供了secure_link來完成防盜鏈功能,可以給服務器文件鏈接添加時間戳和校驗碼,從而保護服務器文件不被任意下載盜用。
時序圖
如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。
們經常會看到在瀏覽某一圖片時會彈出一“403權限禁止”錯誤,這說明有可能正在瀏覽的這個網站用到的圖片在盜用別的網站圖片,而被盜用的網站采用了防盜鏈技術。那么怎樣才能不讓自己的網站受害呢?
下面我來介紹常用的兩種方法
1一般的防盜鏈如下
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.wosoquan.com wosoquan.com ;
if ($invalid_referer) {
rewrite ^/ http://www.wosoquan.com/retrun.html;
#return 403;
}
}
第一行:gif|jpg|png|swf|flv
表示對gif、jpg、png、swf、flv后綴的文件實行防盜鏈
第二行: 表示對www.ingnix.com這2個來路進行判斷
if{}里面內容的意思是,如果來路不是指定來思是,如果來路不是指定來路就跳轉到http://www.wosoquan.com/retrun.html頁面,當然直接返回403也是可以的。
二:針對圖片目錄防止盜鏈
location /images/ {
alias /data/images/;
valid_referers none blocked server_names *.xok.la xok.la ;
if ($valid_referers) {return 403;}
}
*請認真填寫需求信息,我們會在24小時內與您取得聯系。