Nginx反向代理设置黑名单
2022/7/13 5:20:03
本文主要是介绍Nginx反向代理设置黑名单,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Nginx反向代理设置黑名单
作为架构师,你必须掌握 openresty
Openresty设置访问黑名单
1、简单设置nginx配置文件
(py36env) [root@www conf]# ll nginx.conf 配置新的location
location /bklist {
access_by_lua_block {
local blacklist = {
['192.168.1.118'] = true //true黑名单,false白名单
}
if blacklist[ngx.var.remote_addr] then
return ngx.exit(ngx.HTTP_FORBIDDEN)
end
}
content_by_lua_block {
ngx.say(ngx.var.remote_addr)
}
}
(py36env) [root@www conf]# /usr/local/openresty/nginx/sbin/nginx -s reload
(py36env) [root@www ~]# curl 192.168.1.118/bklist -I 访问403拒绝
HTTP/1.1 403 Forbidden
2、通过lua脚本设置访问
设置lua脚本,动态设置黑白名单,拆分ng配置信息,
(py36v) [root@www ~]# cat /usr/local/openresty/nginx/conf/nginx.conf 配置ng
location /bklist {
access_by_lua_file ../luajit/blacklist_v2.lua;
content_by_lua_block {
ngx.say(ngx.var.remote_addr)
}
}
(py36env) [root@www ~]# cat /usr/local/openresty/luajit/blacklist.lua
local blacklist = {
['192.168.1.118'] = false
}
if blacklist[ngx.var.remote_addr] then
return ngx.exit(ngx.HTTP_FORBIDDEN)
end
(py36env) [root@www ~]#
3、通过lua脚本设置访问控制
通过redis实现动态,添加删除白名单。
Nginx配置加载lua文件。
location /bklist {
access_by_lua_file ../luajit/blacklist.lua;
content_by_lua_block {
ngx.say(ngx.var.remote_addr)
}
}
(py36env) [root@www ~]# cat /usr/local/openresty/luajit/blacklist.lua
local blacklist = {
['192.168.1.118'] = false
}
if blacklist[ngx.var.remote_addr] then
return ngx.exit(ngx.HTTP_FORBIDDEN)
访问请求,
(py36env) [root@www ~]# curl 192.168.1.118/bklist
192.168.1.118
(py36env) [root@www ~]# curl 192.168.1.118/bklist -I
HTTP/1.1 200 OK
3、通过lua脚本设置访问控制
(py36env) [root@www ~]# cat /usr/local/openresty/nginx/conf/nginx.conf
location /bklist {
access_by_lua_file ../luajit/blacklist_v2.lua;
content_by_lua_block {
ngx.say(ngx.var.remote_addr)
}
}
(py36env) [root@www ~]# cat /usr/local/openresty/luajit/blacklist_v2.lua
local redis = require "resty.redis"
local red = redis:new()
local ok, err = red:connect('127.0.0.1', 6379)
if not ok then
ngx.log(ngx.INFO, "err:" ..err)
end
local ipaddr = ngx.var.remote_addr
local exists, err = red:sismember("black_list", ipaddr)
if err then
return ngx.exit("interval err..")
end
if exists == 1 then
return ngx.exit(ngx.HTTP_FORBIDEN)
redis操作黑名单key,全程热加载到ng。
Redis Sadd 命令将一个或多个成员元素加入到集合中,已存在集合的成员元素将被忽略。
假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。
当集合 key 不是集合类型时,返回一个错误。
注意:在 Redis2.4 版本以前, SADD 只接受单个成员值。
(py36env) [root@www ~]# redis-cli
127.0.0.1:6379> SADD black_list 192.168.1.118 #添加成员
127.0.0.1:6379> SADD black_list 192.168.1.102
127.0.0.1:6379> SMEMBERS black_list #查看成员
1) "192.168.1.102"
2) "192.168.1.118"
127.0.0.1:6379> SREM black_list 192.168.1.118 #删除成员
加入黑名单之后,访问变500.
[root@localhost ~]# curl 192.168.1.118/bklist -I
HTTP/1.1 500 Internal Server Error
参考链接:https://www.bilibili.com/video/BV1Ra411Y7hn?spm_id_from=333.337.search-card.all.click&vd_source=641f16f92229b0afdb36cbc42e671cc0
这篇关于Nginx反向代理设置黑名单的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享