前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx从陌生到入门05——防盗链的基础配置

Nginx从陌生到入门05——防盗链的基础配置

作者头像
huolong
发布2023-12-04 09:00:40
8710
发布2023-12-04 09:00:40
举报
文章被收录于专栏:技术指北

上一节课的内容是基于反向代理的负载均衡。这一节的内容是防盗链。这里简单说一下什么是防盗链

Nginx的防盗链是一种用于保护资源免受盗链的安全机制。盗链指的是其他网站在未经授权的情况下直接使用你网站上的资源,例如图片、视频或其他文件,消耗你的带宽和资源。Nginx可以检查HTTP请求中的Referer字段,该字段指示了请求的来源网页。你可以配置Nginx只允许特定的Referer来源访问资源,拒绝其他非授权的请求。 Nginx的防盗链可以实现以下作用:

节省带宽和资源消耗:防止其他网站直接使用你的资源,可以减少非授权访问的流量消耗,提高服务器的响应速度和性能。

保护数据安全:防止未经授权的访问可以减少数据泄露的风险。只有经过授权的用户或来源才能访问敏感数据。

维护内容版权:如果你有版权保护的内容,防盗链可以阻止其他网站盗用你的内容,维护你的知识产权。

话不多说,开搞~

在nginx的配置文件里,我们依然采用上一节的servername或者你也可以新配置一个,这个都可以。配置是这样的。 防盗链的配置我们会放在location里面。

代码语言:javascript
复制
server {
  listen 80;
  server_name test3.aionlinefun.icu;

location / {
     `root html` /test;
index index.htm index.html;
}
}

这是一个站点的基础配置。接着我们在当前 html所在的路径新建一个img文件夹,里面放一个 图片test.png。

然后我们编辑nginx.conf配置文件。在刚刚的server里新增一个location。配置如下 。这个的意思是当我们访问img路径下的资源时候,nginx会去 /usr/local/nginx 下的img路径里找对应的资源,道理和 root html 是一样的。 注意这个location的位置一定是在对应的server里面。

代码语言:javascript
复制
location /img/ {
root /usr/local/nginx;
autoindex on;
}

现在我们尚未开启防盗链,那么我从我电脑访问这个资源,以及服务器自己访问这个资源都是没问题的。截图如下:

接着我要开启防盗链,只允许referer为空或者blocked或者指定的域名访问 。 我们在刚刚的img对应的location新增valid_referers配置,配置如下。

代码语言:javascript
复制
location /img/ {
valid_referers none blocked *.aionlinefun.icu;              #这一行相当于你要放行的白名单
if ($invalid_referer) {
return 403; }
root /usr/local/nginx;
autoindex on;
}

重启nginx服务,我们来验证一下。

当我们直接访问是可以访问的,当我们使用curl -e 来指定Referer 为百度时候,则就访问失败了。

同理,如果你想你的服务器上的图片只允许指定的域名访问,那么就可以在刚刚域名的位置填写你自己的域名即可。这样其他人盗用你图床的图片,结果都是403 。如果你想其他的静态资源也开启防盗链。 你可以在location那里填写类似这样的正则:location ~ ..(gif|jpg|ico|png|css|svg|js)$来实现。

值得说明一下的是,配置了none字段,浏览器直接访问图片是可以的,浏览器直接打开图片,它的referer是空的。

**Referer(引荐者)是HTTP请求头的一个字段,用于指示发送当前请求的页面的URL。它告诉服务器从哪个页面链接或跳转过来的。 当你通过浏览器直接访问一个URL时,通常不会发送Referer字段。这是因为直接在浏览器中输入URL或使用书签等方式访问页面时,没有引荐来源。因此,如果你通过浏览器直接访问资源,服务器可能不会收到Referer字段**

创作不易,如果您觉得这篇文章对你有帮助,不妨给我点个赞,这将是我继续分享优质内容的动力。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年12月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档