Nginx的詳細防盜鏈配置

Nginx的詳細防盜鏈配置php

 

Nginx的防盜鏈
通常的防盜鏈以下:
location ~ .*\.(flv)$ {
valid_referers none blocked video.artxun.com www.artxun.com;
if ($invalid_referer) {
rewrite ^/ http://video.artxun.com/;
#return 404;
}
}第一行:gif|jpg|png|swf|flv
表示對gif、jpg、png、swf、flv後綴的文件實行防盜鏈
第二行:www.ccvita.com www.phpq.net
表示對www.ccvita.com www.phpq.net這2個來路進行判斷
if{}裏面內容的意思是,若是來路不是指定來路就跳轉到錯誤頁面,固然直接返回404也是能夠的。html

NginxHttpAccessKeyModule實現防盜鏈
若是不怕麻煩,有條件實現的話,推薦使用NginxHttpAccessKeyModule這個東西。web

他的運行方式是:如個人download 目錄下有一個 file.zip 的文件。對應的URI 是http://www.ccvita.com/download/file.zip
使用ngx_http_accesskey_module 模塊後http://www.ccvita.com/download/file.zip?key=09093abeac094. 只有給定的key值正確了,纔可以下載download目錄下的file.zip。並且 key 值是根據用戶的IP有關的,這樣就能夠避免被盜鏈了。服務器

聽說NginxHttpAccessKeyModule如今連迅雷均可以防了,能夠嘗試一下。ide

Nginx的Rewrite配置測試

06-18網站

Nginx的Rewrite
通過網上查閱和測試,發現Nginx的Rewrite規則和Apache的Rewite規則差異不是很大,幾乎能夠直接使用。好比在Apache中這樣寫 規則
rewrite ^/([0-9]{5}).html$ /viewthread.php?tid=$1 last;
而在Nginx中寫成這樣寫是沒法啓動的,解決的辦法是加上兩個雙引號:
rewrite 「^/([0-9]{5}).html$」 /viewthread.php?tid=$1 last;
同時將RewriteRule爲Rewrite,基本就實現了Nginx的Rewrite規則到Apache的Rewite規則的轉換。ui

Rewrite的Flags
last – 基本上都用這個Flag。
break – 停止Rewirte,不在繼續匹配
redirect – 返回臨時重定向的HTTP狀態302
permanent – 返回永久重定向的HTTP狀態301spa

官方文檔請點擊http://wiki.codemongers.com/NginxHttpRewriteModule,另外若是對於 302,301這些狀態有疑問的,能夠參考《301 Redirect 永久重定向的實現》:http://www.ccvita.com/85.html
若是須要對Nginx配置防盜鏈的話,能夠參考《Nginx的防盜鏈配置》:http://www.ccvita.com/312.html.net

Discuz!在Nginx下的Rewrite
須要說明的是,下網上之前一直流傳的Rewrite都是有誤的。
下面的Rewrite中百分號前面多了個轉移字符「\」,這在Apache中是須要的,而在Nginx中則是不須要的。
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page\%3D$3&page=$2 last;
正確的應該是
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
這個錯誤在基本上目前全部使用Nginx做爲服務器,而且開啓了Rewrite的網站上存在。包括Discuz!官方,目前已經給cnteacher反饋 了。

完整正確的Discuz!在Nginx下的Rewrite以下: rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last; rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last; rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last; rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last; rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last; break;

相關文章
相關標籤/搜索