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

server/2024/12/14 10:23:27/

运维小白入门——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.ppmy.cn/server/150064.html

相关文章

MedLSAM: 用于3D CT图像的局部化和分割模型|文献速递-生成式模型与transformer在医学影像中的应用

Title 题目 MedLSAM: Localize and segment anything model for 3D CT images MedLSAM: 用于3D CT图像的局部化和分割模型 01 文献速递介绍 最近,计算机视觉领域对开发大规模的基础模型的兴趣不断增加,这些模型能够同时处理多个视觉任务&#xff0c…

常见的网络命令

目录 1. ping2. netstat3. pidof 1. ping ping 命令可以用于检查两台主机是否连通(是否可以进行通信) ping -cn ip/域名 -cn: 指定 ping 的次数 n2. netstat netstat:一个查看网络状态的工具,常用于监听 常用选项 -n 拒绝显示别名…

pcl::PointCloud<pcl::PointXYZ>和pcl::PointCloud<pcl::PointXYZ>::Ptr 转换及新建点云显示

点云智能指针格式和非指针格式的转换 pcl::PointCloud<PointT>::Ptr cloud_ptr(new pcl::PointCloud<PointT>); pcl::PointCloud<PointT> cloud; cloud *cloud_ptr; cloud_ptr boost::make_shared<pcl::PointCloud<PointT>>(cloud);全部代码&…

电商数据API接口:安全与性能的双重挑战

随着电子商务的蓬勃发展&#xff0c;电商平台与外部服务、内部系统之间的数据交换和通信变得日益频繁。API&#xff08;应用程序编程接口&#xff09;接口作为这一过程中的关键枢纽&#xff0c;其安全性和性能表现对于电商平台的稳定运行和用户体验至关重要。然而&#xff0c;电…

期末复习-计算机网络

目录 第四章&#xff1a;网络层 1. 虚电路服务和数据报服务的对比 2. 分类的 IP 地址 3. IP 地址与硬件地址&#xff0c;地址解析协议 ARP 4. IP 数据报的格式 5. IP 层转发分组的流程 6. 划分子网&#xff08;子网掩码、划分子网、使用子网时分组的转发&#xff09; …

阿里云数据库MongoDB版助力极致游戏高效开发

客户简介 成立于2010年的厦门极致互动网络技术股份有限公司&#xff08;以下简称“公司”或“极致游戏”&#xff09;&#xff0c;是一家集网络游戏产品研发与运营为一体的重点软件企业&#xff0c;公司专注于面向全球用户的网络游戏研发与运营。在整个产业链中&#xff0c;公…

多媒体文件解复用(Demuxing)过程

多媒体文件的解复用&#xff08;Demuxing&#xff09;过程指的是从一个多媒体容器文件&#xff08;如 MP4、MKV、AVI 等&#xff09;中提取不同类型的多媒体数据流&#xff08;例如视频流、音频流、字幕流等&#xff09;的过程。 容器文件本身并不包含实际的视频或音频数据&…

微服务-01【续】

1.OpenFeign 上篇文章我们利用Nacos实现了服务的治理&#xff0c;利用利用RestTemplate实现了服务的远程调用。但是远程调用的代码太复杂了&#xff1a; 而且这种调用方式&#xff0c;与原本的本地方法调用差异太大&#xff0c;编程时的体验也不统一&#xff0c;一会儿远程调用…