openresty更改状态码

因为以前restful返回用了http的状态码4xx,在有些环境中,slb会根据状态码来进行拦截汇总处理,只好在openresty将对应的状态码更改为200,绕过这个限制,主要增加配置:

        header_filter_by_lua '
           if ngx.status >= 400 and  ngx.status < 500 then
             ngx.status = 200                    --修改状态码
           end 
        ';

参考:ngx.status 修改返回状态码和返回头 · jinghua

### 使用 OpenResty 实现 IP 封禁配置和管理 #### 一、环境准备 确保已安装并正确配置好 OpenResty 和 Redis。当访问配置好的站点IP,页面显示“Welcome to OpenResty!”表明OpenResty已经成功安装及配置[^2]。 #### 二、基于 Nginx+Lua+Redis 架构实现 IP 黑名单功能 选择此架构来管理和共享黑名单数据,提高系统的灵活性与效率。所有操作均在内存中完成,因此速度极快[^4]。 #### 三、编写 Lua 脚本处理请求 创建一个名为 `ip_blacklist.lua` 的文件,在其中加入如下代码: ```lua local redis = require "resty.redis" function block_ip() local red = redis:new() -- 连接至本地的 Redis 数据库,默认端口为6379 red:set_timeout(1000) local ok, err = red:connect("127.0.0.1", 6379) if not ok then ngx.say("failed to connect: ", err) return end -- 获取客户端真实IP地址 local client_ip = ngx.var.remote_addr -- 查询该IP是否存在于黑名单集合内 local res, err = red:sismember("blacklist_ips", client_ip) -- 断开连接 red:close() if tonumber(res)==1 then -- 如果存在,则返回HTTP状态码403表示拒绝服务 ngx.exit(ngx.HTTP_FORBIDDEN) else -- 否则继续执行后续逻辑 ngx.exec("@default") end end ``` 这段脚本实现了对传入请求的拦截检查,一旦发现来自被封锁列表中的IP就会立即终止会话并向其发送错误响应消息;反之则放行正常流程[^1]。 #### 四、修改 Nginx 配置文件集成 Lua 处理器 编辑 `/usr/local/openresty/nginx/conf/nginx.conf` 文件,在http块下新增location匹配规则,并指定上述自定义模块作为处理器: ```nginx http { ... server{ listen 80; server_name localhost; location / { access_by_lua_file '/path/to/ip_blacklist.lua'; root html; index index.html index.htm; } } ... } ``` 这样每当有新的 HTTP 请求到达时都会先经过 Lua 编写的过滤机制再决定是否给予通行许可[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小她爹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值