nginx geo模块、map模块的使用

本文深入探讨Nginx中的geo模块,解释其如何通过客户端地址创建变量进行优雅的访问控制,提供具体配置示例,并对比if语句,强调geo模块在维护性和效率上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是geo?
根据客户端地址创建新变量。

geo有什么用?
相当于ip列表,和$remote_addr 的 匹配情况返回值。用geo更优雅。

geo是必须的么?
不是必须的,用if也可以完成他的功能,但是geo更优雅,更好维护。

geo的例子

常用写法:

geo $remote_addr $geo {
    default 0; # 这里0和1都是可以的
    127.0.0.1 1;
    192.168.0.1 1;
    192.168.1.0/24 1; # 网段写法,都可以
}

然后在location中写:

# 如果不在白名单,返回403
location = / {
	if($geo = 0){  
		return 403; 
	}
}

不写 $remote_addr 可以么?
可以的,以下2种写法作用相同:

geo $geo{} # 默认就是$remote_addr 
geo $remote_addr $geo{}

当然,也可以自定义地址:

geo $custom_addr $geo{} # $custom_addr地址 从 geo列表中匹配

注意2条原则:
1:如果geo指令后不输入 a d d r e s s 那 么 默 认 就 使 用 变 量 address 那么默认就使用变量 address使remite_addr作为ip地址
2:{} 内的指令匹配:优先最长匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值