一、防盗链配置

  • HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器藉此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站
  • 通过限制referer来实现防盗链的功能
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

配置文件增加如下内容

<Directory /data/wwwroot/123.com>
       SetEnvIfNoCase Referer "http://www.123.com" local_ref
       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>
   </Directory>

/usr/local/apache2.4/bin/apachectl -t 
 /usr/local/apache2.4/bin/apachectl graceful
 
  • curl -e "http://www.aminglinux.com/123.html" 自定义referer
 curl -e "http://www.baidu.com/123.html" -x127.0.0.1:80 www.123.com/images/123.jpg -I
 
  • curl测试状态码为403则被限制访问了
 curl -e "http://www.123.com/123.html" -x127.0.0.1:80 www.123.com/images/123.jpg -I
 

  • order决定顺序,以及最终结果,上面是先allow然后再deny,由于无deny选项,所以最后结果是allow,只允许从本网站访问本网站的文件

二、访问控制 – Directory

  • 只允许服务器本机ip访问某个目录
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

核心配置文件内容

<Directory /data/wwwroot/123.com/images/>
       Order deny,allow
       Deny from all
       Allow from 127.0.0.1
   </Directory>

/usr/local/apache2.4/bin/apachectl -t 
 /usr/local/apache2.4/bin/apachectl graceful
 
curl  -x127.0.0.1:80 www.123.com/images/123.jpg -I

在本机浏览器测试

三、访问控制 – FilesMatch

  • 只允许服务器本机ip访问某个文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

核心配置文件内容

<Directory /data/wwwroot/123.com>
    <FilesMatch  admin.php>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </FilesMatch>
</Directory>

在浏览器测试123.com下其他文件可以打开,admin.php无法访问

curl -x127.0.0.1:80 www.123.com/admin.php -I