為什么要配置防盜鏈呢扼劈?
如果你的論壇圖片被別人大量引用驻啤,耗費(fèi)了你的大量帶寬資源,如果更不幸的是荐吵,你租用的服務(wù)器是按流量收費(fèi)的話骑冗,那么不好意思,GG先煎!隔天你就會(huì)收到欠費(fèi)的船票嘍贼涩!
來和我一起走進(jìn)防盜鏈的學(xué)習(xí)吧。
編輯虛擬主機(jī)的配置文件
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
在相應(yīng)的虛擬主機(jī)中加入配置文件如下:
SetEnvIfNoCase Referer "^http://.*\.123\.com" local_ref? ??
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
? ? ? ? Order Allow,Deny
? ? ? ? Allow from env=local_ref
</filesmatch>
又到了解釋的時(shí)間了薯蝎,我又去Google了下~*~
The SetEnvIfNoCase is semantically identical to theSetEnvIfdirective, and differs only in that the regular expression matching is performed in a case-insensitive manner.
其實(shí)SetEnvIfNoCase和之前講的SetEnvIf語義上是一樣的遥倦,只是SetEnvNoCase是忽略大小寫的,就這點(diǎn)差別占锯,他也是用來定義一個(gè)環(huán)境變量的谊迄。
SetEnvIfNoCase Referer ? ? ? ?指明跳轉(zhuǎn)來我們網(wǎng)站的上一站網(wǎng)址
"^http://.*\.123\.com" ? ? ? 符合以http://開頭以.123.com結(jié)尾的
local_ref ? ? ? ? ? ? ? 變量名
SetEnvIfNoCase Referer "^http://.*\.123\.com" local_ref 整句話的意思是如果上一跳的網(wǎng)址是http://開頭以.123.com結(jié)尾的(并且不區(qū)分大小寫),則定義為local_ref
同理:
SetEnvIfNoCase Referer "^$" local_ref指的直接輸入地址訪問的烟央,也被定義為local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">表示匹配文件名中包含.txt|.doc|.mp3|.zip|.rar|.jpg|.gif中任意一個(gè)的统诺,對(duì)于這種文件進(jìn)行以下處理:
Order Allow,Deny
Allow from env=local_ref
允許所有值等于變量local_ref的網(wǎng)址訪問這些文件,其他的都拒絕
保存后重啟Apache服務(wù)器
用一臺(tái)其他機(jī)器訪問我們的網(wǎng)頁(yè)疑俭,就會(huì)看到網(wǎng)頁(yè)可以加載粮呢,但是圖片等都是無法加載的。