Sign inSign up

lushirong/openresty

By lushirong

•Updated 4 months ago

openresty 增加 GeoIP2、 开源waf组件、nginx-module-vts模块

Image
0

749

lushirong/openresty repository overview

⁠🐳 OpenResty 定制镜像说明 (集成 GeoIP2 + 开源 WAF + 流量监控)

本镜像基于 OpenResty 构建,集成了 GeoIP2 地理位置识别、开源 WAF 组件以及流量监控模块,适用于构建高性能、高安全性的 Web 服务。

⁠1. 镜像与组件详情

组件/特性版本/说明备注
OpenRestylatest 标签为 1.31.1.1其他标签版本与 OpenResty 版本号一致
GeoIP2 数据库更新至 2026/06/07数据库来源:MaxMind⁠
监控模块nginx-module-vts模块来源:nginx-module-vts⁠,仅 1.27.1.2 及以上标签包含此模块
WAF 组件开源 WAF组件来源:unixhot/waf⁠

模块功能说明:

  • Nginx-module-vts:提供实时流量监控与统计(请求次数、响应时间、流量大小等),支持 JSON、HTML、Prometheus 等多种格式输出,便于与 Prometheus 集成。
  • GeoLite2 数据库:已预置在镜像中,路径为 /usr/local/openresty/nginx/geo2_db,包含 GeoLite2-City.mmdb 和 GeoLite2-Country.mmdb。

⁠2. 目录结构与挂载点

建议在运行容器时,将以下目录挂载到宿主机以持久化数据和配置:

目录类型容器内路径说明
日志目录/usr/local/openresty/nginx/logsOpenResty 及 WAF 日志存储位置
主配置文件/usr/local/openresty/nginx/conf/nginx.confNginx 主配置文件
7层代理配置/usr/local/openresty/nginx/conf/conf.d存放 HTTP/HTTPS 服务配置
4层代理配置/usr/local/openresty/nginx/conf/tcp_udp_proxy存放 TCP/UDP 代理配置
SSL 证书/usr/local/openresty/nginx/conf/certsSSL 证书文件存放目录
HTML 根目录/usr/local/openresty/nginx/html静态网页文件根目录
GeoIP2 数据库/usr/local/openresty/nginx/geo2_dbGeoIP2 数据库文件目录

⁠3. 快速启动示例

您可以使用以下 docker run 命令启动容器。请根据实际路径替换 /my/custom/...。

docker run --name openresty \
  -p 80:80 \
  --restart=always \
  -d \
  -v /my/custom/logs:/usr/local/openresty/nginx/logs \
  -v /my/custom/conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf \
  -v /my/custom/tcp_udp_proxy:/usr/local/openresty/nginx/conf/tcp_udp_proxy \
  -v /my/custom/conf.d:/usr/local/openresty/nginx/conf/conf.d \
  -v /my/custom/html:/usr/local/openresty/nginx/html \
  -v /my/custom/geo2_db:/usr/local/openresty/nginx/geo2_db \
  -v /my/custom/certs:/usr/local/openresty/nginx/conf/certs \
  -v /etc/localtime:/etc/localtime:ro \
  lushirong/openresty:latest

💡 提示:

  • GeoIP2 数据库:若不挂载自定义数据库,容器将使用镜像内置的数据库文件。
  • Nginx 配置:若不挂载自定义 nginx.conf,将使用镜像内置的默认配置。

⁠4. 高级配置示例

基于地理位置与 IP 的访问控制

利用内置的 GeoIP2 模块,可以实现基于国家或 IP 的黑白名单功能。

location / {
    set $is_allow 0;
    
    # 禁止来源地理位置非中国的访问 (CN, HK, MO, TW)
    if ($geoip2_country_code !~* "(CN|HK|MO|TW)") { 
        set $is_allow 1;
    }
    
    # 禁止特定 IP 访问
    if ($realip = '80.66.83.48') { 
        set $is_allow 1;
    }
    
    # 执行拦截
    if ($is_allow = 1) {
        return 403 'deny';
        break;
    }
    
    # ... 其他正常业务配置
}

Tag summary

Content type

Image

Digest

sha256:9af754729…

Size

320.8 MB

Last updated

4 months ago

docker pull lushirong/openresty