上一节课的内容是基于反向代理的负载均衡。这一节的内容是防盗链。这里简单说一下什么是防盗链
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里面。
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字段**
创作不易,如果您觉得这篇文章对你有帮助,不妨给我点个赞,这将是我继续分享优质内容的动力。