配置Nginx的防盗链
实验环境
- 一台最小化安装的CentOS 7.3虚拟机
- 配置:1核心/512MB
- nginx版本1.12.2
一、配置盗链网站
1.启动一台nginx虚拟机,配置两个网站
vim /etc/nginx/conf.d/vhosts.conf
添加以下内容
server {
listen 80;
server_name site1.test.com;
root /var/wwwroot/site1;
index index.html;
location / {
}
}
server {
listen 80;
server_name site2.test.com;
root /var/wwwroot/site2;
index index.html;
location / {
}
}

2.在宿主机编辑C:\Windows\System32\drivers\etc\hosts文件
192.168.204.11 site1.test.com
192.168.204.11 site2.test.com
3.创建网站根目录
mkdir /var/wwwroot
cd /var/wwwroot
mkdir site1
mkdir site2
echo -e "<h1>site1</h1><img src='1.jpg'>" >> site1/index.html
echo -e "<h1>site2</h1><img src='http://site1.test.com/1.jpg'>" >> site2/index.html
4.将1.jpg上传到/var/wwwroot/site1目录
5.启动nginx服务
systemctl restart nginx
netstat -anpt | grep nginx

6.防火墙放通80端口
setenforce 0
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
7.在宿主机访问
http://site1.test.com

http://site2.test.com

二、配置site1.test.com防盗链
1.编辑nginx配置文件
server {
listen 80;
server_name site1.test.com;
root /var/wwwroot/site1;
index index.html;
location / {
}
location ~ \.(jpg|png|gif|jpeg)$ {
valid_referers site1.test.com;
if ($invalid_referer) {
return 403;
}
}
}
server {
listen 80;
server_name site2.test.com;
root /var/wwwroot/site2;
index index.html;
location / {
}
}

2.重启nginx服务
systemctl restart nginx
3.在宿主机访问
清除浏览器缓存,访问http://site1.test.com

清除浏览器缓存,访问http://site2.test.com

可见,防盗链配置起到了作用
三、配置防盗链返回其他资源
1.编辑nginx配置文件
增加一个虚拟主机,对防盗链保护的资源进行重写
server {
listen 80;
server_name site1.test.com;
root /var/wwwroot/site1;
index index.html;
location / {
}
location ~ \.(jpg|png|gif|jpeg)$ {
valid_referers site1.test.com;
if ($invalid_referer) {
rewrite ^/ http://site3.test.com/notfound.jpg;
#return 403;
}
}
}
server {
listen 80;
server_name site2.test.com;
root /var/wwwroot/site2;
index index.html;
location / {
}
}
server {
listen 80;
server_name site3.test.com;
root /var/wwwroot/site3;
index index.html;
location / {
}
}
解释
location ~ \.(jpg|png|gif|jpeg)$ {}为设置防盗链的文件类型,使用竖线|分隔。
valid_referers site1.test.com *.nginx.org;为白名单,使用空格分隔,可以使用*进行泛域名设置。
if ($invalid_referer) {}为判断是否符合白名单,不符合白名单将执行{}内的内容。
rewrite ^/ http://site3.test.com/notfound.jpg;为重写资源,如果不合符白名单,则重写为该地址。
return 403;代表返回的状态码为403。
2.建立site3根目录
cd /var/wwwroot
mkdir site3
echo -e "<h1>site3</h1><img src='notfound.jpg'>" >> site3/index.html
3.上传notfound.jpg文件至/var/wwwroot/site3目录
4.重启nginx服务
systemctl restart nginx
5.在宿主机编辑C:\Windows\System32\drivers\etc\hosts文件
增加对site3.test.com的映射
192.168.204.11 site1.test.com
192.168.204.11 site2.test.com
192.168.204.11 site3.test.com
6.在宿主机访问http://site2.test.com
可以看到,在site2中盗用的site1的1.jpg文件,被重定向到了site3上的notfound.jpg文件

本文链接: https://www.cnblogs.com/connect/p/nginx-anti-theft-chain.html
配置Nginx的防盗链的更多相关文章
- Nginx图片防盗链【实战】
访问我的博客 前言 博主目前在一家原创小说网站公司工作,由于站内的作品全部是原创,于是乎不可避免地会被一些盗版网站爬取盗版,对于防盗版一直没有很好的对策,让公司很是苦恼. 最近去一些盗版网站上搜索我们 ...
- Nginx修改配置实现图片防盗链
一般情况下,防盗链是针对软件下载和图片的,由于一般的站点不提供资源下载,所以本文主要是针对图片的防盗链 1.如果对全站图片做防盗链,至少需要一个另外的域名存放指向图片.因为如果对全站图片做了防盗链,包 ...
- nginx实现防盗链配置方法介绍
有些朋友觉得防盗链就是防止图片,其实有很多东西要进行防盗链了,下面我来介绍在nginx中实现防盗链配置方法有对图片防盗链与下载资源等. 防盗链配置 假设网站域名是 www.php100.com. 编辑 ...
- nginx安全:配置网站图片防盗链
一,为什么要做防盗链? 1,什么是盗链? 比如某人有一个A网站, 他不愿自己存储图片,(因为磁盘和带宽都有成本) 就在自己A网站的页面上直接插入B网站的图片, 从而为自己吸引流量,这就是盗链 2,为什 ...
- Nginx图片防盗链配置
如果我们自己网站内的图片资源被其它网站所盗用,这会增加自己网站的带宽资源,增加很多额外的消耗,而且会对我们系统的稳定性有影响,为了防止自己网站上的图片资源被其它网站所盗用,我们需要给自己的服务器配置防 ...
- Nginx 之防盗链配置
首先,我们需要知道通过什么来实现防盗的! http referer 是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上referer,这是在告诉服务器是从哪个页面链接过来的,服务 ...
- Nginx中防盗链(下载防盗链和图片防盗链)操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- nginx作防盗链设置
盗链是一种损害原有网站合法权益,给原网站所在服务器造成额外负担的非法行为. 盗链的实现原理: 客户端向服务器请求资源时,为了减少网络带宽,提高响应时间,服务器一般不会一次将所有资源完整地传回给客户端. ...
随机推荐
- 《 .NET并发编程实战》阅读指南 - 第8章
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- C# 操作LDAP
C# 操作LDAP查找组或人员信息 using System; using System.Collections.Generic; using System.Linq; using System.We ...
- OCaml (ML家族语言)很好很强大
理由如下: 1. 强类型,写着放心 2. 函数式. 且不是pure functional, 不用像 Haskell 那样极端.. 3. Algebric Data Types 的模式匹配 实在太爽了 ...
- asp.net core 在centeros 7.x下创建服务
Netcore服务生成说明 如有个项目/opt/wwwroot/dpms.1633.com 启动为/usr/bin/dotnet /opt/wwwroot/dpms.1633.com/DPMS.Web ...
- 操作mysql数据库的一些命名
一.打开数据库 1.1.打开命令行输入:mysql -u root -p 1.2.root是本地数据库的用户名,然后输入数据库的密码进入. 二.数据库操作 2.1.创建一个数据库:create dat ...
- [转]QT中的D指针与Q指针
Qt为了使其动态库最大程度上实现二进制兼容,引入了d指针的概念. 那么为什么d指针能实现二进制兼容呢? 为了回答这个问题,首先弄清楚什么是二进制兼容? 所谓二进制兼容动态库,指的是一个在老版本库下运行 ...
- 第二篇Scrum冲刺博客
第二篇Scrum冲刺博客 一.站立式会议 提供当天站立式会议照片一张 二.每个人的工作 成员 已完成工作 明天计划完成的工作 遇到的困难 林剑峰 初步学习小程序的编写.博客园的撰写 初步完成用户界面 ...
- 网商微信实名认证FAQ
一.商户实名认证简介 基于监管政策.系统风控.用户体验等方面的考虑,我们需要加强对从业机构特约商户的风险管理,升级对商户客户身份识别的认证标准.因此,新入驻的从业机构特约商户要陆续按照新标准完成商户实 ...
- Robot Framework RIDE简单使用
Testproject Testsuite Testcase 1.创建测试项目 打开RIDE,点击File--New Project,选择项目路径,填入项目名称 2.右键点击新建的测试项目,选择New ...
- (原+修改)Pip使用国内源安装opencv
转载请注明出处: https://www.cnblogs.com/darkknightzh/p/12000823.html 参考网址: https://www.imooc.com/article/34 ...