nginx精准禁止特定国家或者地区IP访问
1、安装依赖
dnf -y install gcc-c++ libtool gd-devel pcre pcre-devel openssl openssl-devel zlib zlib-devel libmaxminddb-devel pcre-devel zlib-devel gcc gcc-c++ make git
2、获取NGINX安装包并安装
wget https://nginx.org/download/nginx-1.26.1.tar.gz
git clone https://github.com/leev/ngx_http_geoip2_module.git
groupadd nginx
useradd -d /home/nginx -g nginx -s /sbin/nginx nginx./configure --prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-pcre \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_addition_module \--with-http_sub_module \--with-http_dav_module \--with-http_flv_module \--with-http_mp4_module \--with-http_gunzip_module \--with-http_gzip_static_module \--with-http_random_index_module \--with-http_secure_link_module \--with-http_stub_status_module \--with-http_auth_request_module \--with-http_image_filter_module \--with-http_slice_module \--with-mail \--with-threads \--with-file-aio \--with-stream \--with-mail_ssl_module \--with-stream_ssl_module \--add-module=/usr/local/nginx/ngx_http_geoip2_modulemake && make install
参数说明
–prefix=/nginxtest: 指定nginx的安装目录为/nginxtest,这意味着nginx将安装到该目录下。
–user=nginx: 指定nginx运行时的用户为nginx,这是为了增加安全性,以防止nginx以超级用户权限运行。
–group=nginx: 指定nginx运行时的用户组为nginx,与上述相似,也是为了增加安全性。
–with-pcre: 启用PCRE(Perl Compatible Regular Expressions)库,用于支持正则表达式。
–with-http_ssl_module: 启用HTTP SSL模块,支持HTTPS协议。
–with-http_v2_module: 启用HTTP/2模块,支持HTTP/2协议。
–with-http_realip_module: 启用HTTP RealIP模块,允许nginx在代理模式下获取真实的客户端IP地址。
–with-http_addition_module: 启用HTTP Addition模块,允许在响应中添加内容。
–with-http_sub_module: 启用HTTP Substitution模块,允许在响应中替换内容。
–with-http_dav_module: 启用HTTP DAV(WebDAV)模块,支持WebDAV协议。
–with-http_flv_module: 启用HTTP FLV模块,支持Flash视频流。
–with-http_mp4_module: 启用HTTP MP4模块,支持MP4视频流。
–with-http_gunzip_module: 启用HTTP GUNZIP模块,用于解压缩响应中的gzip压缩数据。
–with-http_gzip_static_module: 启用HTTP Gzip Static模块,用于在发送静态文件时压缩数据。
–with-http_random_index_module: 启用HTTP Random Index模块,允许nginx在目录中选择一个随机文件作为索引。
–with-http_secure_link_module: 启用HTTP Secure Link模块,用于生成带有安全签名的URL。
–with-http_stub_status_module: 启用HTTP Stub Status模块,允许监控nginx的状态信息。
–with-http_auth_request_module: 启用HTTP Auth Request模块,允许在需要认证时向另一个服务器发送认证请求。
–with-http_image_filter_module: 启用HTTP Image Filter模块,允许对图像进行处理。
–with-http_slice_module: 启用HTTP Slice模块,允许nginx按指定大小切片响应。
–with-mail: 启用邮件代理服务器功能。
–with-threads: 启用线程支持。
–with-file-aio: 启用文件异步IO支持。
–with-stream: 启用TCP/UDP流代理功能。
–with-mail_ssl_module: 启用邮件SSL模块,支持SSL加密的邮件传输。
–with-stream_ssl_module: 启用流SSL模块,支持SSL加密的TCP/UDP流。
--add-module=/usr/local/ngx_http_geoip2_module: 添加额外的模块ngx_http_geoip2_module,该模块用于GeoIP2地理定位功能
3、先下载 IP 地理位置数据库文件
wget https://cdn.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/Country.mmdb
也可以去github上下载,这个数据库比较新比较全,地址:https://github.com/wp-statistics/GeoLite2-Country
由于 IP 广播泛滥,所以 GeoIP 并不是那么准确,如果觉得 GeoIP 库太旧了,需要自行到官网下载最新版,将配置的路径改一下即可。
GeoIP不光可以屏蔽国家,还可以屏蔽身份、城市,
数据库文件下载网页地址 http://dev.maxmind.com/geoip/geoip2/geolite2/
http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
http://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN.tar.gz自动更新数据库程序 - https://dev.maxmind.com/geoip/geoipupdate/
源码github地址 - https://github.com/maxmind/geoipupdate
数据操作API库资源网址 https://dev.maxmind.com/geoip/geoip2/downloadable/#MaxMind_APIs
4、加载 IP 地理位置数据库
修改NGINX配置文件
http {# 加载 GeoIP 数据库文件geoip2 /path/to/GeoLite2-Country.mmdb { # 指定 GeoIP2 数据库文件路径auto_reload 60m; # 每 60 分钟自动重新加载数据库文件$geoip2_metadata_country_build metadata build_epoch; # 获取数据库元数据$geoip2_data_country_code country iso_code; # 获取 IP 所属国家的 ISO 代码}
}
5、配置拦截规则
在配置文件中添加拦截规则,指定你要阻止的国家或地区。以下是一个示例:
修改NGINX配置文件
http {# 设置拦截规则map $geoip2_data_country_code $allowed_country {default no; # 默认情况下不允许访问CN yes; # 指定中国 IP 地址不被拦截HK yes; # 指定香港 IP 地址不被拦截}
}
6、应用拦截规则
在你的服务器块或虚拟主机配置中,使用 if 指令结合上述定义的 map 指令来应用拦截规则:
修改NGINX配置文件
server {listen 80;server_name example.com;if ($allowed_country = yes) { # 如果 IP 地址所属国家被标记为不允许访问return 403; # 返回 403 Forbidden 错误页面}# 其他配置项
}
重新加载 Nginx
完成配置后,重新加载或重启 Nginx 以使更改生效:
nginx -s reload
这样配置后,Nginx 将会拦截来自指定国家或地区的 IP 请求,并返回 403 Forbidden 错误页面。
nginx限制身份和城市访问后续补充。
相关文章:
nginx精准禁止特定国家或者地区IP访问
1、安装依赖 dnf -y install gcc-c libtool gd-devel pcre pcre-devel openssl openssl-devel zlib zlib-devel libmaxminddb-devel pcre-devel zlib-devel gcc gcc-c make git2、获取NGINX安装包并安装 wget https://nginx.org/download/nginx-1.26.1.tar.gz git clone http…...
单片机课设-基于单片机的电子时钟设计(仿真+代码+报告)
基于单片机的电子时钟设计 前言一、课设任务是什么?二、系统总体方案硬件设计2.1 系统硬件总体设计2.2 键盘电路设计2.3 DS1302实时时钟芯片电路设计2.4 复位电路2.5 LCD电路设计 三、软件设计3.1 主程序流程图3.2 主要程序设计代码3.3 修改时间函数3.4 扫描键盘函数 四、仿真…...
.net 6 api 修改URL为小写
我们创建的api项目,url是[Route(“[controller]”)],类似这样子定义的。我们的controller命名是大写字母开头的,显示在url很明显不是很好看(url不区分大小写)。转换方式: var builder WebApplication.Crea…...
Windows电脑部署Jellyfin服务端并进行远程访问配置详细教程
文章目录 前言1. Jellyfin服务网站搭建1.1 Jellyfin下载和安装1.2 Jellyfin网页测试 2.本地网页发布2.1 cpolar的安装和注册2.2 Cpolar云端设置2.3 Cpolar本地设置 3.公网访问测试4. 结语 前言 本文主要分享如何使用Windows电脑本地部署Jellyfin影音服务并结合cpolar内网穿透工…...
rsync同步目录脚本
假设有两台服务器的示例 IP 地址为: Server A: 192.168.1.100Server B: 192.168.1.200 现在来解释如何使用这个脚本进行服务器之间文件夹内容的同步,保留路径和服务器信息的抽象化。 1. 脚本文件位置和权限 假设脚本文件位于 /root/script.sh&#x…...
LeetCode 6. Z 字形变换
LeetCode 6. Z 字形变换 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下: 之后,你的输出需要从左往右逐行读取,产生…...
RTC实时时钟
一、Unix时间戳 1、Unix 时间戳 (1)Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒 (2)时间戳存储在一个秒计数器中,秒计数器为…...
WHAT - React 学习系列(一)
官方文档 If you have a lot of HTML to port to JSX, you can use an online converter. You’ll get two things from useState: the current state (count), and the function that lets you update it (setCount). To “remember” things, components use state.To mak…...
代理模式(静态代理/动态代理)
代理模式(Proxy Pattern) 一 定义 为其他对象提供一种代理,以控制对这个对象的访问。 代理对象在客户端和目标对象之间起到了中介作用,起到保护或增强目标对象的作用。 属于结构型设计模式。 代理模式分为静态代理和动态代理。…...
Word2Vec基本实践
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...
IIS配置網站登錄驗證,禁止匿名登陸
需要維護一個以前的舊系統,這個系統在內網運行,需要抓取電腦的登陸賬號,作為權限管理的一部分因此需要在IIS配置一下...
抖音矩阵系统搭建,AI剪辑短视频,一键管理矩阵账号
目录 前言: 一、抖音矩阵系统有哪些功能? 1.AI智能文案 2.多平台账号授权 3.多种剪辑模式 4. 矩阵一键发布,智能发布 5.抖音爆店码功能 6.私信实时互动 7.去水印及外链 二、抖音矩阵系统可以解决哪些问题? 总结ÿ…...
山东大学软件学院创新项目实训开发日志——收尾篇
山东大学软件学院创新项目实训开发日志——收尾篇 项目名称:ModuFusion Visionary:实现跨模态文本与视觉的相关推荐 -------项目目标: 本项目旨在开发一款跨模态交互式应用,用户可以上传图片或视频,并使用文本、点、…...
vue2.7支持组合式API,但是对应的vue-router3并不支持useRoute、useRouter。
最近在做一个项目,因为目标用户浏览器版本并不确定,可能会有较旧版本,于是采用vue2.7而不是vue3,最近一年多使用vue3开发的项目都碰到了很多chrome 63-73版本,而对应UI 库 element plus又问题很多。 为了不碰到这些问…...
摊位纠纷演变肢体冲突,倒赔了500:残疾夫妇与摊主谁之过?
在一个小商贩密集的街区,一起由摊位纠纷引发的肢体冲突事件在当地社区和网络上引起了热议。涉事双方为一名摊主和一对残疾夫妇,他们的争执源自对一个摊位的使用权。本是口头上的争吵,却由于双方情绪激动,迅速升级为肢体冲突&#…...
深入理解和实现Windows进程间通信(消息队列)
常见的进程间通信方法 常见的进程间通信方法有: 管道(Pipe)消息队列共享内存信号量套接字 下面,我们将详细介绍消息队列的原理以及具体实现。 什么是消息队列? Windows操作系统使用消息机制来促进应用程序与操作系…...
Web网页前端教程免费:引领您踏入编程的奇幻世界
Web网页前端教程免费:引领您踏入编程的奇幻世界 在当今数字化时代,Web前端技术已成为互联网发展的重要驱动力。想要踏入这一领域,掌握相关技能,却苦于找不到合适的教程?别担心,本文将为您带来一份免费的We…...
北斗短报文终端在应急消防通信场景中的应用
在应对自然灾害和紧急情况时,北斗三号短报文终端以其全球覆盖、实时通信和精准定位的能力,成为应急消防通信的得力助手。它不仅能够在地面通信中断的极端条件下保障信息传递的畅通,还能提供精准的位置信息,为救援行动提供有力支持…...
Java跳动爱心代码
1.计算爱心曲线上的点的公式 计算爱心曲线上的点的公式通常基于参数方程。以下是两种常见的参数方程表示方法,用于绘制爱心曲线: 1.1基于 (x, y) 坐标的参数方程 x a * (2 * cos(θ) - sin(θ))^3 y a * (2 * sin(θ) - cos(θ))^3 其中ÿ…...
Swift Combine — Operators(常用Filtering类操作符介绍)
目录 filter(_: )tryFilter(_: )compactMap(_: )tryCompactMap(_: )removeDuplicates()first(where:)last(where:) Combine中对 Publisher的值进行操作的方法称为 Operator(操作符)。 Combine中的 Operator通常会生成一个 Publisher,该 …...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
