运维系列Nginx:设置黑/白名单IP限制

黑/白名单IP限制访问配置

第一种:deny和allow指令属于ngx_http_access_module,nginx默认加载此模块,所以可直接使用。这种方式,最简单,最直接。设置类似防火墙iptable,使用方法:

# 白名单设置,allow后面为可访问IP 
location / {allow 123.13.123.12;allow 23.53.32.1/100;deny  all;
}# 黑名单设置,deny后面接限制的IP,为什么不加allow all? 因为这个默认是开启的 
location / {deny 123.13.123.12;
}# 白名单,特定目录访问限制
location /tree/list {allow 123.13.123.12;deny  all;
}# 或者通过读取文件IP配置白名单,在/home/目录下创建whitelist.conf,并写入需要加入白名单的IP,添加完成后查看如下:
location /{include /home/whitelist.conf;#默认位置路径为/etc/nginx/ 下,#如直接写include whitelist.conf,则只需要在/etc/nginx目录下创建whitelist.confdeny all;
}cat /home/whitelist.conf
#白名单IP
allow 10.1.1.10;
allow 10.1.1.11;

第二种方法,ngx_http_geo_module,参数需设置在位置在http模块中。此模块可设置IP限制,也可设置国家地区限制。位置在server模块外即可

# 配置文件直接添加
geo $ip_list {default 0;#设置默认值为0192.168.1.0/24 1;10.1.0.0/16    1;
}
server {listen       8081;server_name  192.168.152.100;location / {root   /var/www/test;index  index.html index.htm index.php;if ( $ip_list = 0 ) {#判断默认值,如果值为0,可访问,这时上面添加的IP为黑名单。#白名单,将设置$ip_list = 1,这时上面添加的IP为白名单。proxy_pass http://192.168.152.100:8081;
}# 同样可通过读取文件IP配置
geo $ip_list {default 0;#设置默认值为0include ip_white.conf;
}
server {listen       8081;server_name  192.168.152.100;location / {root   /var/www/test;index  index.html index.htm index.php;if ( $ip_list = 0 ) {return 403;#限制的IP返回值为403,也可以设置为503,504其他值。#建议设置503,504这样返回的页面不会暴露nginx相关信息,限制的IP看到的信息只显示服务器错误,无法判断真正原因。}
}cat /etc/nginx/ip_list.conf
192.168.152.1 1;
192.168.150.0/24 1;

ngx_http_geo_module 负载均衡(扩展) ngx_http_geo_module,模块还可以做负载均衡使用,如web集群在不同地区都有服务器,某个地区IP段,负载均衡至访问某个地区的服务器。方式类似,IP后面加上自定义值,不仅仅数字,如US,CN等字母。

geo $country {default default;111.11.11.0/24   uk;#IP段定义值uk111.11.12.0/24   us;#IP段定义值us}
upstream  uk.server {erver 122.11.11.11:9090;#定义值uk的IP直接访问此服务器
} upstream  us.server {server 133.11.12.22:9090;#定义值us的IP直接访问此服务器
}upstream  default.server {server 144.11.11.33:9090;#默认的定义值default的IP直接访问此服务器
}server {listen    9090;server_name 144.11.11.33;location / {root  /var/www/html/;index index.html index.htm;}}

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

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

相关文章

【数值分析】choleskey分解,matlab实现

平方根分解(Choleskey分解) A G G T , A 对称正定 AGG^ \mathrm T \,\,,\,\, A对称正定 AGGT,A对称正定 A L D M L D L T ( L D 1 / 2 ) ( L D 1 / 2 ) T G G T \begin{align*} A LDM LDL^ \mathrm T(LD^{1/2})(LD^{1/2})^ \mathrm TGG^ \mathrm T…

huggingface的tokenizer解读

文章目录 前言一、huggingface的tokenizer含义1、含义2、整体概括 二、加载lmsys/vicuna-7b-v1.5模型的tokenizer三、调用tokernizer方法四、字符串的tokens应用1、tokenizer应用2、tokenizer进行token分词(tokenizer.tokenize)3、tokens转模型识别ids(tokenizer.convert_token…

STM32F407-14.3.10-表73具有有断路功能的互补通道OCx和OCxN的输出控制位-00x10

如上表所示,MOE0,OSSI0,CCxE1,CCxNE0时,OCx与OCxN的输出状态取决于GPIO端口上下拉状态。 ---------------------------------------------------------------------------------------------------------------------…

Python 中的运算符介绍(1)

算数运算符 常见的% 、//、/ 用法 赋值运算符 赋值运算:将等号右边赋值给等号左边 常见场景: 比较运算符 代码解析: 逻辑运算符 位运算符(了解) 三目运算符 身份证运算符 成员运算符

考研后SpringBoot复习2—容器底层相关注解

考研后SpringBoot复习2 SpringBoot底层注解学习 与容器功能相关的注解与springboot的底层原理密切相关 组件添加注解configuration Spring Ioc容器部分回顾 包括在配置中注册,开启包扫描和注解驱动开发等需要在进行重新的学习回顾 实例 package com.dzu.boot;imp…

zyqn-arm软中断设置

所有SGI都是边缘触发的,sgi的灵敏度类型是固定的,不能改变。 软中断初始化流程 1、初始化异常处理 2、初始化中断控制器 3、注册异常处理回调函数到CPU 4、连接软中断信号与注册软中断回调函数 5、使能中断控制器中的软中断中断 6、使能异常处理 …

Android 10.0 mtp模式下PC上显示两个内部存储的问题解决办法

1. 前言 在10.0的系统产品开发中,在mtp模式下,有些时候会在pc端显示两个手机内部存储空间,所以这时候显得特别不友好,出于对产品 的完善,所以要求解决这个问题,接下来分析下这个问题 2.mtp模式下PC上显示两个内部存储的问题解决办法的核心类 frameworks\base\media\jav…

k8s学习 — 各章节重要知识点

k8s学习 — 各章节重要知识点 学习资料k8s版本0 相关命令0.1 yaml配置文件中粘贴内容格式混乱的解决办法0.2 通用命令0.3 Node 相关命令0.4 Pod 相关命令0.5 Deployment 相关命令0.6 Service 相关命令0.7 Namespace 相关命令 1 k8s学习 — 第一章 核心概念1.1 Pod、Node、Servi…

Python装饰器的专业解释

装饰器,其实是用到了闭包的原理来进行操作的。 单个装饰器: 以下是一个简单的例子: def outer(func):print("OUTER enter ...")def wrapper(*args, **kwargs):print("调用之前......")result func(*args, **kwargs)p…

【Vue2+3入门到实战】(17)VUE之VueCli脚手架自定认创建项目、ESlint代码规范与修复、 ESlint自动修正插件的使用 详细示例

目录 一、本节内容二、VueCli 自定义创建项目三、ESlint代码规范及手动修复1.JavaScript Standard Style 规范说明2.代码规范错误3.手动修正 四、通过eslint插件来实现自动修正 一、本节内容 VueCli脚手架自定认创建项目ESlint代码规范与修复ESlint自动修正插件 二、VueCli 自…

FA模板制作流程

1、FA模板制作的流程(完整复制模板制作) 总结: FA完整复制云桌面模板流程: 1、安装一个全新的Windows,挂载并安装tools 2、关闭防火墙、启动administrator本地超管用户 3、挂载FusionAccess_WindowsDesktop_Instal…

使用iris数据集学习基础的机器学习分类任务

通过一个案例来理解机器学习的分类任务 关于数据集的相关介绍大家可以观看下面的连接: iris数据集的介绍 根据数据集的特征值来预测目标值 即通过x来预测y 相应的代码如下: # Training Machine Learning Algorithms for Classification # 加载数据 s h…

C/C++面向对象(OOP)编程-回调函数详解(回调函数、异步编程、函数指针、)

本文主要介绍回调函数的使用,包括函数指针、异步回调编程、主要通过详细的例子来指导在异步编程和事件编程中如何使用回调函数来实现。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:C/C精进之路 &…

黑马程序员SSM框架-SpringBoot

视频连接:SpringBoot-01-SpringBoot工程入门案例开发步骤_哔哩哔哩_bilibili SpringBoot简介 入门程序 也可以基于官网创建项目。 SpringBoot项目快速启动 下面的插件将项目运行所需的依赖jar包全部加入到了最终运行的jar包中,并将入口程序指定。 Spri…

【网络面试(2)】DNS原理-域名和IP地址的查询转换

从上一篇博客我们得知浏览器是如何生成了HTTP消息了,但是浏览器作为应用程序,是不具备向网络中发送请求的能力,而是需要委托给操作系统的内核协议栈来发送请求。在委托协议栈之前,浏览器还要做的一件事情就是将域名转换为IP地址。…

gn入门(Chromium)

Chromium是用gn和ninja进行编译的,即gn把.gn文件转换成.ninja文件,然后ninja根据.ninja文件将源码生成目标程序。gn和ninja的关系就与cmake和make的关系差不多。 代码下载:https://download.csdn.net/download/arv002/88668243 1. 环境配置 在我们自己的项目中,也可以使用…

java进阶(三)

IO与网络编程 3 输入输出流IO3.1 基础定义3.2 IO框架3.3 读取字节输入流-InputStream3.3.1 InputStream.read3.3.2 FileInputStream类说明 3.4读取字符输入流Reader3.4.1 Reader.read3.4.2 FileReader类说明 3.5 字节输出流OutputStream3.5.1 OutputStream.write3.5.2 FileOutp…

NumPy 中级教程——通用函数(ufuncs)

Python NumPy 中级教程:通用函数(ufuncs) NumPy 中的通用函数(ufuncs)是一种能够对数组进行元素级操作的函数,支持数组的快速、逐元素的操作,是进行数据处理的关键工具之一。在本篇博客中&…

nodejs微信小程序+python+PHP特困救助供养信息管理系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

分库分表之Mycat应用学习四

4 分片策略详解 分片的目标是将大量数据和访问请求均匀分布在多个节点上,通过这种方式提升数 据服务的存储和负载能力。 4.1 Mycat 分片策略详解 总体上分为连续分片和离散分片,还有一种是连续分片和离散分片的结合,例如先 范围后取模。 …