有個客戶的站點負載過高,於是我們可愛的憤青系統工程師將其的Apache換成Nginx,效果很明顯。現在記錄一些Apache轉換過程中的小細節,留下備忘。
Nginx的防盜鏈
一般的防盜鏈如下:
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked yusky.me www.yusky.me;
if ($invalid_referer) {
rewrite ^/ http://yusky.me/403.html;
#return 404;
}
}
第一行:gif|jpg|png|swf|flv
表示對gif、jpg、png、swf、flv後綴的文件實行防盜鏈
第二行:yusky.me www.yusky.me
表示對yusky.me www.yusky.me這2個來路進行判斷
if{}裡面內容的意思是,如果來路不是指定來路就跳轉到錯誤頁面,當然直接返回404也是可以的。
NginxHttpAccessKeyModule實現防盜鏈
如果不怕麻煩,有條件實現的話,推薦使用NginxHttpAccessKeyModule這個東西。
他的運行方式是:如我的download 目錄下有一個 file.zip 的文件。對應的URI 是http://www.ccvita.com/download/file.zip
使用ngx_http_accesskey_module 模塊後http://yusky.me/download/file.zip?key=09093abeac094. 只有給定的key值正確了,才能夠下載download目錄下的file.zip。而且 key 值是根據用戶的IP有關的,這樣就可以避免被盜鏈了。
據說NginxHttpAccessKeyModule現在連迅雷都可以防了,可以嘗試一下。