ngx_lua实现CIDR的匹配

server {
	listen 38090;

	access_by_lua_block {
		local require = require
		local ipmatch = require("resty.ipmatcher")

		local ip, err = ipmatch.new({
			"192.168.10.100",
			"172.0.0.0/8",
			"127.0.0.1"
		})

		if not ip then
			ngx.log(ngx.ERR, "new ipmatcher err: ", err)
		end

		-- 获取请求头
		local h = ngx.req.get_headers()["addr"]
		if not h then
			ngx.log(ngx.ERR, "get request header is null!")
		end

		local exist, err = ip:match(h)
		if exist then
			ngx.log(ngx.ERR, "此IP在白名单内: 放行, ip: ", h)
		else
			ngx.log(ngx.ERR, "此IP不在白名单内: 拒绝, ip: ", h)
			-- ngx.status = 403
			return ngx.exit(403)
		end

	}

	location / {
		echo "success!";
	}
}
posted @   白--茶  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示