Openres-Manager:基于OpenResty的轻量化Nginx反向代理管理方案
转载自:https://mp.weixin.qq.com/s/rbiMZF4JTb8jhbx3KWA_4A
产品定位与核心优势
Openres-Manager是一款基于OpenResty的Web化Nginx反向代理管理工具,通过图形化界面将传统Nginx配置中的反向代理、负载均衡、安全防护等复杂功能模块化,显著降低运维门槛。其核心价值体现在:
零代码配置:通过可视化界面完成SSL证书申请、上游服务配置、路由规则定义等操作
动态负载均衡:支持轮询、权重、最小连接数等策略,兼容Docker容器动态IP场景
安全防护集成:内置CC防护、IP黑白名单、WAF规则引擎等安全模块
自动化运维:支持证书自动续期、配置热更新、日志集中管理
安装部署指南
- 源码安装方案(推荐)
# 执行安装脚本(需root权限)
sudo bash -c "$(curl -fsSL https://om.uusec.com/installer_cn.sh)"
# 默认端口占用:80(HTTP)、443(HTTPS)、34567(管理面板)
- Docker容器化部署
# 拉取官方镜像
docker pull openres-manager/om:latest
# 启动容器(需映射配置卷)
docker run -d \
-p 80:80 -p 443:443 -p 34567:34567 \
-v /etc/openres-manager/conf:/etc/openres-manager \
--name openres-manager \
openres-manager/om:latest
#########################
#或者
#新建docker-composer.yml
services:
openresty-manager:
image: uusec/openresty-manager:latest
# image: swr.cn-south-1.myhuaweicloud.com/uusec/openresty-manager:latest # 网络不好时可以用这个
container_name: openresty-manager
restart: unless-stopped
#tty: true
#stdin_open: true
network_mode: bridge
ports:
- "80:80" # 前面端口本地不冲突
- "443:443" # 前面端口本地不冲突
- "34567:34567" # 前面端口本地不冲突
environment:
- TZ=Asia/Shanghai
volumes:
- /mnt/appdata/openresty-manager/acme:/opt/om/acme # 冒号前面为acme子文件夹绝对路径
- /mnt/appdata/openresty-manager/data:/opt/om/data # 冒号前面为data子文件夹绝对路径
- /mnt/appdata/openresty-manager/nginx/conf/sites:/opt/om/nginx/conf/sites # 冒号前面为sites子文件夹绝对路径
- /mnt/appdata/openresty-manager/nginx/conf/certs:/opt/om/nginx/conf/certs # 冒号前面为certs子文件夹绝对路径
- /mnt/appdata/openresty-manager/nginx/conf/upstreams:/opt/om/nginx/conf/upstreams # 冒号前面为upstreams子文件夹绝对路径
##############
#启动服务
docker-compose up -d
- 初始配置
访问 http://<服务器IP>:34567
默认账号:admin,密码:#Passw0rd(建议首次登录后修改)
核心功能模块详解
- SSL证书自动化管理
证书申请:支持Let's Encrypt自动化申请,需提前配置DNS解析
自动续期:内置证书监控模块,到期前30天自动触发续期流程
多域名支持:单证书可绑定多个子域名,支持泛域名证书
- 上游服务配置
服务发现:支持Docker容器服务自动发现(需配置Docker API访问)
健康检查:基于TCP/HTTP的健康探测机制,自动剔除故障节点
动态负载
-- 示例:基于Lua脚本的动态权重调整
local upstream = require "ngx.upstream"
local servers = {
{host="192.168.1.100", port=8080, weight=2},
{host="192.168.1.101", port=8080, weight=1}
}
upstream.set_peers(servers)
- 路由规则配置
路径匹配:支持正则表达式、前缀匹配等路由策略
条件路由:可根据Header、Cookie、参数值进行动态分流
A/B测试:通过权重配置实现流量灰度发布
- 安全防护体系
CC防护
# 配置示例:60秒内单个IP最多100次请求
lua_shared_dict ip_limit 10m;
access_by_lua_block {
local limit_count = require "resty.limit.count"
local lim, err = limit_count.new("ip_limit", 100, 60)
if not lim then
ngx.exit(500)
end
local delay, err = lim:incoming(ngx.var.binary_remote_addr, true)
if err == "rejected" then
ngx.exit(503)
end
}
WAF规则:集成ModSecurity规则集,支持SQL注入、XSS等攻击防护
IP管控:支持国家/地区级访问控制,内置GeoIP数据库
进阶应用场景
- 微服务网关
服务治理:集成Consul/Eureka实现服务注册发现
熔断限流:基于Sentinel的动态限流策略
请求转换:支持gRPC转HTTP、JSON Schema验证等
- 边缘计算节点
就近访问:结合Anycast实现全球低延迟访问
内容缓存:配置Redis缓存层,支持毫秒级响应
动态压缩:根据Accept-Encoding自动选择压缩算法
- 混合云架构
多云负载:支持AWS、Azure、阿里云等混合云环境
流量调度:基于网络质量、成本等因素的智能路由
灾难恢复:自动故障转移与回滚机制
性能优化建议
连接池配置:
lua_socket_pool_size 320;
keepalive_timeout 60s;
keepalive_requests 10000;
JIT优化:
lua_code_cache on; # 生产环境必须开启
jit_opt "2"; # 启用LuaJIT优化
资源监控:
- 集成Prometheus导出器
- 配置Grafana可视化面板
- 设置CPU/内存使用率告警阈值
项目总结
Openres-Manager通过将OpenResty的强大能力封装为易用的管理界面,既保留了Nginx的高性能特性,又显著降低了运维复杂度。其特别适合以下场景:
- 中小型企业的快速业务部署
- 多租户SaaS平台的代理管理
- 边缘计算节点的统一管控
- 混合云架构的流量调度
- 建议生产环境部署时:
- 启用HTTPS强制跳转
- 配置双因素认证
- 定期备份配置文件
- 监控关键性能指标(QPS、响应时间、错误率)
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。