当前位置: 首页 > news >正文

Nginx+PHP+CI框架实现,访问静态文件带权限验证

1、访问来源验证配置nginx

#文件访问来源校验 如路径:https://ys.test.com/test/api/uploads/test.png
#不是该允许域名的将返回403页面
location /test/api/uploads/ {valid_referers ys.test.com ys.test2.com;if ($invalid_referer) {return 403;}
}

2、拦截访问文件url交由后端内部判断是否有访问权限

nginx配置

#拦截文件访问url地址 如:https://ys.test.com/test/api/uploads/test.png
location /test/api/uploads/ {#开启只允许内部访问internal;error_page 404 =200 @backend;
}#内部php校验地址
location @backend {#进行访问地址重定向  # https://ys.test.com/test/api/uploads/test.png # -> # https://ys.test.com/test/api/down_auth/down/test.pngrewrite ^/test/api/uploads/(.*)$ /test/api/down_auth/down/$1 break;proxy_pass https://ys.yuhoutech.com;proxy_redirect   off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

php后端

<?php if (!defined('BASEPATH'))exit('No direct script access allowed');/*** 文件浏览权限判断*/
class Down_auth extends MY_Controller
{public function __construct(){parent::__construct();}/*** @Notes: 校验权限* @Function down*/public function down(){// 验证用户是否登陆 没登陆则返回获取文件失败$user_info = $this->session->userdata("user_info");if (empty($user_info)) {exit('get file failed!');}$base_dir = '/test/api/uploads/';// 图片真实存放路径$imagePath = $_SERVER['DOCUMENT_ROOT'] . $base_dir;// 获取url中的图片名 如 http://localhost/test/api/uploads/test.jpg 获取值为test.jpg$explode = explode("/", parse_url($_SERVER['REQUEST_URI'])['path']);$image = $explode[count($explode) - 1];// 拼接图片真实全路径 如 /var/www/test/api/uploads/test.jpg$fullPath = $imagePath . $image;//判断文件是否存在if (!file_exists($fullPath)) {exit('file 404 ');}// 获取图片mime信息 设置Content-type头$mime = getimagesize($fullPath)['mime'];header("Content-Type: $mime");// 设置sendfile头部,让nginx跳转到download下查找对应图片 相当于交给nginx进行后续处理header("X-Accel-Redirect: $base_dir/$image");}}

参考地址:
nginx静态文件权限控制-防盗链-CSDN博客

 基于Nginx+PHP实现的带权限验证的静态文件服务器

springMvc+nginx文件鉴权(校验权限)服务器

 

相关文章:

Nginx+PHP+CI框架实现,访问静态文件带权限验证

1、访问来源验证配置nginx #文件访问来源校验 如路径&#xff1a;https://ys.test.com/test/api/uploads/test.png #不是该允许域名的将返回403页面 location /test/api/uploads/ {valid_referers ys.test.com ys.test2.com;if ($invalid_referer) {return 403;} }2、拦截访问…...

javascript 第二天

正则表达式 a/正则表达式内容/ a.test(“需要检测的内容”) 焦点事件 onfocus 获得焦点 onblur 失去焦点 他们都是事件&#xff0c;和onclick一样 onchange 内容改变 失去焦点时生效&#xff0c;多了内容检测&#xff0c;如果内容不变不触发&#xff0c;内容改变才触发 onk…...

unity2D游戏开发17战斗精灵

导入 将PlayerFight32x32.png拖Player文件夹进去 设置属性 创建动画剪辑 选中前四帧,右键Create|Animation,将动画命名为player-ire-east 其他几个动画也创建好后,将其拖到Animations|Animations文件夹 选中PlayerController,再点击Animator 创建新的Blend Tree Graph,并重…...

kafka架构+原理+源码

1.安装jdk17 sudo yum -y update sudo wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm sudo yum -y install ./jdk-17_linux-x64_bin.rpm sudo java -version 2.安装kafka How to easily install kafka without zookeeper | Aditya’s Blog 1.…...

实力共鉴!微风企斩获2024年浙江省专精特新中小企业

日前&#xff0c;微风企斩获2024年浙江省专精特新中小企业荣誉&#xff0c;这是继获得“国家高新技术企业”“浙江省科技中小企业”“杭州市雏鹰计划企业”等权威性认证后&#xff0c;微风企荣获的又一重磅殊荣。 “专精特新中小企业”是国家对具有“专业化、精细化、特色化、新…...

C#:枚举及位标志周边知识详解(小白入门)

文章目录 枚举为什么要有枚举?枚举的性质设置默认类型和显式设置成员的值 位标志(重要)位标记是什么及作用位标志周边知识HasFlag判断是否有该功能枚举前面加Flags的好处 关于枚举的更多知识using static简化代码获取枚举成员的字面量 枚举 为什么要有枚举? 为了增加代码的…...

这本vue3编译原理开源电子书,初中级前端竟然都能看懂

前言 众所周知vue提供了很多黑魔法&#xff0c;比如单文件组件(SFC)、指令、宏函数、css scoped等。这些都是vue提供的开箱即用的功能&#xff0c;大家平时用这些黑魔法的时候有没有疑惑过一些疑问呢。 我们每天写的vue代码一般都是写在*.vue文件中&#xff0c;但是浏览器却只…...

小白如何安装WNO(小波神经算子),需要安装python3.8,torch,ptwt,pywt等

下载项目 WNO在github上面的项目地址如下&#xff1a; https://github.com/csccm-iitd/WNO/tree/main 下载下来后&#xff0c;里面的数据集需要用matlab代码生成&#xff0c;也可以到里面提到的google云盘里面下载数据集 安装环境 然后需要安装环境 注意python版本一定要…...

Java HashMap 源码解读笔记(一)--xunznux

文章目录 HashMap介绍实现说明:源码解读静态常量和内部节点类 Node静态工具方法属性字段 Fields未完待续。。。 HashMap 本文主要是用于记录我在阅读Java1.8的 HashMap 源码所做的笔记。对于源码中的注释会进行翻译下来&#xff0c;并且会对其中部分源码进行注释。 这一篇文章…...

“等保测评下的数据加密与隐私保护“

在当今数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;数据泄露、隐私侵犯等事件频发&#xff0c;不仅给企业带来经济损失&#xff0c;更严重损害了公众信任。等保测评&#xff0c;作为国家信息安全等级保护制度的重要组成部分&#xff0c;对数据加密…...

Oat++ 后端实现跨域

这里记录在官方的例子中&#xff0c;加入跨域。Oat Example-CRUD 在官方的例子中&#xff0c;加入跨域。 Oat Example-CRUD 修改AppComponent.hpp文件中的代码&#xff0c;如下&#xff1a; #include "AppComponent.hpp"#include "controller/UserController…...

Three basic starting points to do AI

Computers have been based on memory/storage for so many years. Don’t try to come up with something else. For so many years, AI has been based on fixed precise rules or fuzzy matching rules. Don’t think about coming up with the third one by yourself. Vi…...

等保测评练习卷22

等级保护初级测评师试题22 姓名&#xff1a; 成绩&#xff1a; 一、判断题&#xff08;10110分&#xff09; 1. 在应用系统测试中&#xff0c;如果审计是一个独立的功能&#xff0c;那么应用系统应对审计进程进行保…...

Linux用户-普通用户

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注我&#xff0c;我尽量把自己会的都分享给大家&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux是一个多用户多任务操作系统,这意味着它可以同时支持多个用户登录并使用系统。…...

世界顶级思想家颜廷利:生命的升华,人类与动物的进化之道

世界顶级思想家颜廷利&#xff1a;生命的升华&#xff0c;人类与动物的进化之道 动物在于进化&#xff0c; 人类载于净化…&#xff08;升命学说&#xff09; 当代世界最著名的哲学家颜廷利教授指出&#xff0c;在探索生命奥秘的广阔旅程中&#xff0c;我们不禁惊叹于大自然…...

团队心脏:项目比赛中激发团队潜力的策略与技巧

团队心脏&#xff1a;项目比赛中激发团队潜力的策略与技巧 前言项目负责人的角色定位执行力的重要性提升个人执行力的策略团队协作的关键持续学习与创新应对挑战的态度总结与反思结语 前言 在项目管理的世界里&#xff0c;每一次比赛都是一场没有硝烟的战争。作为项目负责人&am…...

Qt安卓开发的一些概念

目录 1、Android 版本和 API 的对应关系&#xff1f; 2、ABI是什么 2.1、x86_64 2.2、x86 2.3、arm64-v8a 2.4、armeabi-v7a 3、不同架构的特点 3.1、32位 ARM 架构 (ARMv7) 3.2、64位 ARM 架构 (ARMv8-A) 3.3、32位 Intel 架构 (x86) 3.4、64位 Intel 架构 (x86-64…...

语音交互、AI问答,等你来体验!

功能背景 在实际大屏应用中&#xff0c;用户向大屏直接下达语音指令显的越来越便捷&#xff0c;其中体现的交互感也比通过动作指令来的更加强烈&#xff0c;给用户带来更高效的服务体验。目前EasyV平台开发的自定义事件交互已经很完善&#xff0c;组件之间可以进行触发联动。 …...

深度对比分析python和RPA,为什么会python了,还要用RPA?

我们需要先理解Python和RPA&#xff08;Robotic Process Automation&#xff09;的基本概念以及它们各自的特点和优势&#xff0c;才能真正理解在业务场景中&#xff0c;两者各自可能发挥的实际应用价值和潜在的商业化价值。 Python和RPA的定义及比较 1. Python&#xff1a; …...

el-table支持行拖动

<template><div ref"sortable-wrapper"><slot /></div> </template><script> import sortable from sortablejs;export default {props: {handle: { // 拖动元素type: String,default: },data: { // 列表数据type: Array,defaul…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...