nginx读写分离与防盗链

读写分离

环境

这里的服务器地址为虚拟ip,由于我是在个人三台云主机上操做的
192.168.0.10 nginx前端
192.168.0.20 httpd(用于读)
192.168.0.30 httpd(用于写)html

什么是WebDAV?

Web分布式创做和版本控制(WebDAV)是超文本传输​​协议(HTTP)的扩展,容许客户端执行远程Web内容创做操做。实质上,它使Web服务器能够充当文件服务器,容许做者在Web内容上进行协做。使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还能够支持文件的版本控制。各类服务器都支持WebDAV,包括Apache,Microsoft的Internet信息系统,SabreDAV,Nginx,ownCloud和Nextcloud。前端

在写服务器上开启WebDAV功能

vim /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
    Dav on
</Directory>

重启httpd服务

systemctl restart httpdnginx

授予读写服务器网站的访问权限

为防止网站访问权限不足,须要分别为读写服务器的网站目录授予访问权限apache

setfacl -m u:apache:rwx /var/www/html/

添加读写服务器的首页文件

[root@192.168.0.20]# echo 192.168.0.20 > /var/www/html/index.html
[root@192.168.0.30]# echo 192.168.0.30 > /var/www/html/index.html

进行上传文件测试

分别往读写服务器上上传文件,写服务器成功上传,因为读服务器没有开启WebDAV功能,因此读服务器报405错误。 vim

curl -T zz.txt http://192.168.0.20 (读服务器)
curl -T zz.txt http://192.168.0.30 (写服务器)

nginx读写分离与防盗链

在写服务器的网站根目录也能够看到上传的文件
nginx读写分离与防盗链 浏览器

在nginx前端配置读写分离

编辑nginx配置文件

location /wanger {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://192.168.0.20/;
            if ($request_method = "PUT"){
                      proxy_pass  http://192.168.0.30;
            }
        }

重载nginx

nginx -s reload

进行访问测试

[root@192.168.0.10 ~]# curl 127.0.0.1/
192.168.0.20
[root@192.168.0.10 ~]# curl -T sh.txt 127.0.0.1/

nginx读写分离与防盗链

能够看到写服务器已经存在咱们刚上传的文件了,读写分离测试完成缓存

防盗链

什么是盗链

盗链指的是经过一些技术手段来获取他人服务器上的资源来展现在本身的网站上,而在本身的服务器并无存储这个资源,经过盗链,使他人的的网站服务器压力负担变大。经过借助nginx的ngx_http_referer_module模块的valid_referers指令能够防止盗链,可是referer是能够伪造的,所以也只能防住一部分的盗链。服务器

valid_referers语法

语法 valid_referers none丨 blocked丨 server_names 丨 string ...;
默认 -
应用位置 server,location

参数说明

  • none:referer字段为空
  • blocked:Referer的值被防火墙或者代理服务器删除或假装
  • server_names:一个或多个服务器列表,检测Referer的值是不是列表中的某个
  • $invalid_referer:内置变量,若是来源域名不在这个列表中,那么$invalid_referer变量的值为0,不然为1

    盗链演示

    首先准备两台服务器,地址分别为172.17.51.80,172.17.51.90,其中172.17.51.80为被盗链服务器,咱们首先配置一下172.17.51.80的图片地址,将图片放入网站根目录
    nginx读写分离与防盗链 curl

而后配置172.17.51.90服务器进行盗链HTML的配置,在网站根目录下编辑index.html,并添加172.17.51.80的图片连接
html代码以下: 分布式

<a href="www.baidu.com">
<img src="http://172.17.51.80/a.jpg" /></a>

而后访问172.17.51.90查看盗链效果,盗链成功,这里我使用的是个人两台云主机
nginx读写分离与防盗链

防盗链演示

修改172.17.51.80配置,对referer头进行过滤

location ~ .*\.(jpg|gif|png)$ {
    valid_referers none blocked .*wanger.com;
    if ($invalid_referer) {
        #rewrite ^/ http://$host/403.png;
        return 403;
    }
}

修改完成后重载nginx,并清除浏览器缓存,再次访问能够看到图片挂了
nginx读写分离与防盗链


欢迎各×××陈师傅”
nginx读写分离与防盗链

相关文章
相关标签/搜索