Nginx之配置防盗链(Configuring Anti-hotlinking in Nginx)

运维小白入门——Nginx配置防盗

什么是防盗链:

防盗链技术主要用于防止未经授权的第三方或域名访问网站的静态资源。例如,一个网站可能拥有独特的图片素材,为了防止其他网站通过直接链接图片URL的方式访问这些图片,网站管理员会采用防盗链措施。这样做的原因包括保护版权、减少由于爬虫引起的服务器负载、以及避免不必要的数据流量。

nginx防盗链

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站的图片或某个单独的资源,而不是打开整个页面,这就是盗链,referer就是之前的那个网站域名,正常的referer信息有以下几种,nginx防盗链的代码定义:

  • 定义合规的引用

    valid_referers none | blocked | server_names | string ...;
  • 拒绝不合规的引用

    if  ($invalid_referer) {	rewrite ^/.*$ http://www.b.org/403.html }参数说明:- none:请求报文没有referer首部,比如用户直接在浏览器输入域名访问往web网站,就是没有referer信息- blocked:请求报文由referer信息,但无又有效值为空- server_names:referer首部中包含本主机及nginx监听的server_name- invalid_referer:不合规的feferer引用

nginx实现防盗链

其实在Nginx里面,很容易就做到防盗链的,在nginx.conf文件加入一个localtion配置项。

下面请看配置:

server {    listen 80;    server_name dev.api.dd.com;    root /Users/lidong/Desktop/wwwroot/dd_api/public;    index index.php index.html index.htm;    access_log /Users/lidong/wwwlogs/dev.api.dd.com_access.log;     error_log  /Users/lidong/wwwlogs/dev.api.dd.com_error.log;     location ~ [^/]\.php(/|$) {        fastcgi_pass   127.0.0.1:9000;        fastcgi_index  index.php;        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;        include        fastcgi_params;    }    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {        valid_referers none blocked dev.api.dd.com;        #### 加入如下配置,限定的资源文件如果被第三方调用直接返回403        if ($invalid_referer)        {            return 403;        }    }    try_files $uri $uri/ @rewrite;    location @rewrite {        rewrite ^/(.*)$ /index.php?_url=/$1;    }}

显示给盗链者看到的图片,注意不要放到自己的域名上,因为放盗链的作用,那样对方是看不到的,可以上传到一些支持外联的网络相册上。

当然了,也可以设置某个目录防盗链,只需把localtion匹配的改成一个目录就可以了,比如:​​​​​​​

location /www/ {	alias /www/;	### none blocked 去掉之后,访问文件的路径,无法直接到达    valid_referers none blocked www.qqqq.com qqqq.com;        if ($invalid_referer) {        	return 404;    }}

这样就对images这个目录设置防盗链了。

NGINX错误页面友好显示

范例1:对错误代码403实行本地页面跳转,命令如下:

  • ver { listen 80; server_name www.nmtui.com; location / { root html/www; index index.html index.htm; } error_page 403 /403.html; ## 当出现403错误时,会跳转到403.html页面 }# 上面的/403.html是相对于站点根目录html/www的。

范例2:50x页面放到本地单独目录下,进行优雅显示。​​​​​​​

# redirect server error pages to the static page /50x.htmlerror_page   500 502 503 504  /50x.html;location = /50x.html {    root   /data0/www/html;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889468.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI日记】24.12.13 kaggle 比赛 2-3 大扫除、断舍离、自己做饭

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加:kaggle 比赛 Regression with an Insurance Dataset参考:kaggle 回归类入门比赛 House Prices - Advanced Regression Techniques内容:构建自己的EDA&#xff08…

【echarts】数据过多时可以左右滑动查看(可鼠标可滚动条)

1. 鼠标左右拖动 在和 series 同级的地方配置 dataZoom: dataZoom: [{type: inside, // inside 鼠标左右拖图表,滚轮缩放; slider 使用滑动条start: 0, // 左边的滑块位置,表示从 0 开始显示end: 60, // 右边的滑块位置&#xf…

pytest -s执行的路径

pytest -s执行的路径: 直接写pytest -s,表示从当前路径下开始执行全部.py的文件。 执行具体指定文件:pytest -s .\testXdist\test_dandu.py 下面这样执行pytest -s 会报找不到文件或没权限访问, 必须要加上具体文件路径pytest -s…

内网跨“边界”

背景 “边界”通常是指内网与外网之间的那条边界,在内网中,边界也包括各个区域之间的边界。本篇文章主要介绍在内网各种环境中的shell反弹、内网穿透及文件传输方面常用的一些方法和工具,利用这些方法来跨越内网中的层层边界。 当我们获取到…

Docker的镜像

目录 1. 镜像是什么??2. 镜像命令详解2.1 镜像命令清单2.2 docker rmi命令2.3 docker save命令2.4 docker load命令2.5 docker history命令2.6 docker import命令2.7 docker image prune命令2.8 docker build命令 3. 镜像的操作4. 离线迁移镜像5. 镜像存…

Vue Web开发(五)

1. axios axios官方文档 异步库axios和mockjs模拟后端数据,axios是一个基于promise的HTTP库,使用npm i axios。在main.js中引入,需要绑定在Vue的prototype属性上,并重命名。   (1)main.js文件引用 imp…

【合作原创】使用Termux搭建可以使用的生产力环境(六)

前言 在上一篇【合作原创】使用Termux搭建可以使用的生产力环境(五)-CSDN博客我们讲到了如何美化xfce4桌面,达到类似于Windows的效果,这一篇将继续在上一篇桌面的基础上给我们的系统装上必要的软件,让它做到真正可以使…

docker简单私有仓库的创建

1:下载Registry镜像 导入镜像到本地中 [rootlocalhost ~]# docker load -i registry.tag.gz 进行检查 2:开启Registry registry开启的端口号为5000 [rootlocalhost ~]# docker run -d -p 5000:5000 --restartalways registry [rootlocalhost ~]# dock…

AI技术架构:从基础设施到应用

人工智能(AI)的发展,正以前所未有的速度重塑我们的世界。了解AI技术架构,不仅能帮助我们看懂 AI 的底层逻辑,还能掌握其对各行业变革的潜力与方向。 一、基础设施层:AI 技术的坚实地基 基础设施层是 AI 技…

Python Turtle 实现动态时钟:十二时辰与星空流星效果

在这篇文章中,我将带你通过 Python 的 turtle 模块构建一个动态可视化时钟程序。这个时钟不仅具备传统的时间显示功能,还融合了中国古代的十二时辰与八卦符号,并通过动态星空、流星效果与昼夜背景切换,为程序增添了观赏性和文化内…

使用CSS变量和JavaScript实现鼠标跟随渐变

实现鼠标跟随渐变效果的详细过程&#xff1a; 1. HTML 结构 我们在 HTML 中创建了一个 <div> 元素&#xff0c;用于展示渐变效果。这个元素的 ID 是 gradient-box&#xff0c;方便在 JavaScript 中进行操作。 2. CSS 样式 CSS 变量&#xff1a;在 :root 中定义了两个…

监控易监测对象及指标之:宝兰德中间件JMX监控指标解读

监控易作为一款全面的IT监控软件&#xff0c;能够为企业提供深入、细致的监控服务&#xff0c;确保企业IT系统的稳定运行。在本文中&#xff0c;我们将详细解读监控易针对宝兰德中间件JMX的监控指标&#xff0c;以帮助用户更好地理解和应用这些监控数据。 监测指标概览&#x…

数据仓库-集群管理

主要介绍操作类问题中的集群管理问题。 无法成功创建数据仓库集群时怎么处理&#xff1f; 请检查用户账户余额是否少于100元&#xff0c;是否已经没有配额创建新的数据仓库集群&#xff0c;以及是否存在网络问题。 如账户余额、配额、网络均未发现问题&#xff0c;请联系客户…

期魔方风控模型之委托失败补单程序

你知道吗&#xff1f;只需简单设置&#xff0c;期魔方风控模型就能自动处理风控委托失败的订单&#xff0c;进行补单操作。 那么&#xff0c;这种功能适用于哪些场景呢&#xff1f;让我们一起来探讨一下&#xff01; 在实际交易中&#xff0c;我们有时会遇到在任意交易终端&a…

ubuntu系统的docker安装(2)

查看系统版本 lsb_release -asudo systemctl status docker查看docker是否安装成功 docker pull拉取镜像不成功/docker run不成功 可能有多种原因&#xff1a;网络链接不稳定&#xff0c;没有重启docker&#xff0c;可以先将docker源设置为国内镜像源 sudo systemctl rest…

Source Insight的使用经验汇总

01-Add All"和“Add Tree”有何区别&#xff1f; 在 Source Insight 中&#xff0c;“Add All”和“Add Tree”是两种向项目&#xff08;Project&#xff09;中添加文件的操作选项&#xff0c;它们的区别在于处理文件和目录的方式不同&#xff1a; 1. Add All 范围&am…

MVC基础——市场管理系统(四)

文章目录 项目地址六、EF CORE6.1 配置ef core环境6.2 code first6.2.1 创建Database context1. 添加navigation property2. 添加MarketContext上下文七、Authentication7.1 添加Identity7.2 Run DB migration for Identity7.3 使用Identity7.3.1 设置认证中间件7.3.2 设置权限…

前端编辑器JSON HTML等,vue2-ace-editor,vue3-ace-editor

与框架无关 vue2-ace-editor有问题&#xff0c;ace拿不到&#xff08;brace&#xff09; 一些组件都是基于ace-builds或者brace包装的 不如直接用下面的&#xff0c;不如直接使用下面的 <template><div ref"editor" class"json-editor"><…

Oracle 与 达梦 数据库 对比

当尝试安装了达梦数据库后&#xff0c;发现达梦真的和Oracle数据库太像了&#xff0c;甚至很多语法都相同。 比如&#xff1a;Oracle登录数据库采用sqlplus&#xff0c;达梦采用disql。 比如查看数据视图&#xff1a;达梦和Oracle都有 v$instance、v$database、dba_users等&a…

【docker】12. Docker Volume(存储卷)

什么是存储卷? 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着&#xff0c;当我们在容器中的这个目录下写入数据时&#xff0c;容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。 在宿主机上…