防盜鏈能限制不認識的referer的訪問,可以禁止別人的服務器引用或轉發我服務器上的內容,這樣能夠防止別人盜用我服務器上的資源,服務器的資源被盜用會致使網絡帶寬的使用量上升。php
1.配置虛擬主機文件增長如下內容:html
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com> SetEnvIfNoCase Referer "http://111.com" local_ref SetEnvIfNoCase Referer "http://aaa.com" local_ref SetEnvIfNoCase Referer "^$" local_ref <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)"> Order Allow,Deny Allow from env=local_ref </FilesMatch> </Directory>
修改完以後從新加載一下配置文件:linux
[root@aming-01 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@aming-01 ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
SetEnvIfNoCase : SetEnvIf指令根據客戶端的請求屬性設置環境變量,SetEnvIfNoCase表明當知足某個條件時,爲變量賦值,通常結合其餘指令使用。apache
SetEnvIfNoCase Referer "http://111.com"; local_ref: 將知足條件的refer打上標記local_refvim
Order Allow,Denybash
Allow from env=local_ref : 這段表示除了local_ref能夠同行,其他的所有禁掉服務器
2.使用curl模擬Referer進行測試網絡
[root@aminglinux ~]# curl -e "http://www.qq.com/123.txt";; -x127.0.0.1:80 111.com/cc.jpg -I #模擬www.qq.com顯示403 HTTP/1.1 403 Forbidden Date: Sun, 04 Mar 2018 22:09:49 GMT Server: Apache/2.4.29 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1 [root@aminglinux ~]# curl -e "http://111.com/123.txt";; -x127.0.0.1:80 111.com/cc.jpg -I #模擬成111.com成功訪問 HTTP/1.1 200 OK Date: Sun, 04 Mar 2018 22:10:40 GMT Server: Apache/2.4.29 (Unix) PHP/5.6.30 Last-Modified: Mon, 21 Aug 2017 14:32:40 GMT ETag: "54bcb-5574459d3d200" Accept-Ranges: bytes Content-Length: 347083 Content-Type: image/jpeg
使用-e選項時,域名的描述不能亂寫,要以http://開頭。curl
除了Directory的訪問控制還有FilesMatch的訪問控制,Directory訪問控制相似於限制一個目錄的訪問,而FilesMatch訪問控制則相似於限制一個文件或文件連接的訪問,FilesMatch要寫在Directory以內。測試
1. 編輯虛擬主機配置文件
vim /usr/local/httpd2.4/conf/extra/httpd-vhosts.conf
2. 在配置文件裏添加以下段,目的是對111.com下的admin目錄進行訪問控制
<Directory /data/wwwroot/111.com/admin/> Order deny,allow Deny from all Allow from 127.0.0.1 = 指定某IP訪問 </Directory>
Order 用來定義順序 Order deny,allow 表示先deny 再allow
這段話表是拒絕全部的訪問,僅經過127.0.0.1
3. 配置完成後須要檢查配置文件以及從新加載配置文件纔會生效
/usr/local/httpd2.4/bin/apachectl -t /usr/local/httpd2.4/bin/apachectl graceful
4. 使用curl進行測試是否成功
[root@aminglinux ~]# curl -x127.0.0.1:80 111.com/admin/index.php test [root@aminglinux ~]# curl -x127.0.0.1:80 111.com/admin/index.php -I #使用127.0.0.1能夠正常訪問, HTTP/1.1 200 OK Date: Mon, 05 Mar 2018 16:26:57 GMT Server: Apache/2.4.29 (Unix) PHP/5.6.30 X-Powered-By: PHP/5.6.30 Content-Type: text/html; charset=UTF-8 [root@aminglinux ~]# curl -x192.168.177.7:80 111.com/admin/index.php -I #使用192.168.177.7訪問失敗提示403 Forbidden HTTP/1.1 403 Forbidden Date: Mon, 05 Mar 2018 16:27:42 GMT Server: Apache/2.4.29 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1
1.對111.com下的admin.php開頭頁面進行訪問控制,一樣在虛擬主機配置文件上添加以下段:
<Directory /data/wwwroot/111.com> <FilesMatch "admin.php(.*)"> Order deny,allow Deny from all Allow from 127.0.0.1 </FilesMatch> </Directory>
2. 使用curl進行測試是否成功
[root@aminglinux ~]# curl -x192.168.177.7:80 111.com/admin.php?=1=2 -I # 顯示403 Forbidden 不容許訪問 404表示容許訪問 HTTP/1.1 403 Forbidden Date: Mon, 05 Mar 2018 19:23:54 GMT Server: Apache/2.4.29 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1
擴展
幾種限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定義header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556