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

Nginx 限制只能白名单 uri 请求的配置

实际生产项目中,大多数时候我们会将后端的 http 接口通过前置 nginx 进行反向代理,对互联网用户提供服务。往往我们后端服务所能提供的接口服务是大于互联网用户侧的实际请求的接口地址数量的(例如后端服务一共有100个api接口,经过前置 nginx 对外提供的接口是给微信小程序使用的,而微信小程序中需要调用的实际接口只有40个)。鉴于此,从系统安全架构角度来讲,我们必须应该在前置的 Nginx 中,白名单限定对外提供服务的具体 http 接口 URI 地址。

本文以具体配置示例的方式,演示在 Nginx 中如何实现白名单 Uri 的拦截配置。

1、配置白名单 URI 配置文件

我们为了更好的管理白名单地址,所以讲配置白名单的配置文件独立出来,然后使用 nginx 的 include 导入。

我的配置文件 ./nginx/conf.d/map_whitelist_uri.conf 内容如下:

map $uri $allowed_uri {default 0;# 精确匹配(推荐尽可能使用精确匹配,这样利于管理)/api/v1/cs/configs 1;/exact/path1 1;/exact/path2 1;# 正则表达式匹配~^/demo/.+\.(css|js|ttf|woff|woff2|svg|git|jpg|jpeg|png)$ 1;~/regex/path/[0-9]+ 1;~/another/regex.* 1;# 更多的路径...
}

主配置文件 ./nginx/nginx.conf 中使用 include 导入扩展的配置文件,可以通配符导入,也可以精确导入。

http {// 省略其他配置// 导入conf.d中的所有配置,你可以导入具体的配置文件include ./conf.d/*.conf;
}

2、使用白名单map配置

server 块的 location 块中配置条件拦截。

server {// 省略其他配置location / {// 不在白名单URI中的,直接响应403结束if ($allowed_uri = 0) {return 403;}}// 省略其他配置
}

(END)

http://www.lryc.cn/news/503477.html

相关文章:

  • QT c++ 同时使用sqlite 和mysql数据库的问题
  • redis集群 服务器更换ip,怎么办,怎么更换redis集群的ip
  • 【C++习题】19.数组中第K个大的元素
  • JIS-CTF: VulnUpload靶场渗透
  • BGP-面试
  • Git-安装与常用命令
  • 回归预测 | Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习回归预测
  • 微信小程序跳转其他小程序以及跳转网站
  • Not using native diff for overlay2, this may cause degraded performance……
  • 【自用】管材流转项目 数据库恢复之 PIPE 表 二维码相关 各个表恢复 SQL
  • 【渗透测试】信息收集二
  • 测试工程师八股文04|计算机网络 和 其他
  • 定时/延时任务-Kafka时间轮源码分析
  • 如何用状态图进行设计05
  • 【计算机视觉】边缘检测
  • 林曦词典|无聊
  • LabVIEW光栅衍射虚拟仿真系统
  • 【NumPy进阶】:内存视图、性能优化与高级线性代数
  • 从YOLOv5到训练实战:易用性和扩展性的加强
  • Prim 算法在不同权重范围内的性能分析及其实现
  • canal安装使用
  • python爬虫常用数据保存模板(Excel、CSV、mysql)——scrapy中常用数据提取方法(CSS、XPATH、正则)(23)
  • You need to call SQLitePCL.raw.SetProvider()
  • IoTDB AINode 报错,call inference 301: Error ocurred while executing inference
  • LLM之RAG实战(五十)| FastAPI:构建基于LLM的WEB接口界面
  • 项目-移动端适配的几种方案
  • HCIA-Access V2.5_2_2网络通信基础_TCP/IP协议栈报文封装
  • LSTM详解
  • 从零开始搭建Android开发环境:简单易懂的完整教程
  • 大模型运用-Prompt Engineering(提示工程)