iprepd-nginx

iprepd OpenResty 模块

$ opm get ajvb/iprepd-nginx

iprepd-nginx 模块

iprepd-nginx 是一个用于集成 iprepd 的 OpenResty 模块。

您可以使用此仓库中的示例配置作为独立代理,或者使用 opm 安装并自行集成。

注意: 如果 nginx 在负载均衡器后面,请确保使用类似于 ngx_http_realip_module 的东西。

安装

使用 opm 安装

    opm get ajvb/iprepd-nginx

示例

注意: 查看此仓库中的 /etc 以获取工作示例。

    init_by_lua_block {
      client = require("resty.iprepd").new({
        url = os.getenv("IPREPD_URL") or "http://127.0.0.1:8080",
        api_key = os.getenv("IPREPD_API_KEY"),
        cache_ttl = os.getenv("IPREPD_CACHE_TTL") or 30,
        threshold = tonumber(os.getenv("IPREPD_REPUTATION_THRESHOLD")),
        timeout = tonumber(os.getenv("IPREPD_TIMEOUT")) or 10,
      })
    }
    
    server {
      listen       80;
      root         /dev/null;
      error_page   500 502 503 504  /50x.html;
    
      location = /50x.html {
        root  /usr/local/openresty/nginx/html/;
      }
    
      location = /health {
        return 200;
        access_log off;
      }
    
      set_by_lua_block $backend { return os.getenv("backend") }
    
      # Default location, will enforce authentication there
      location / {
        proxy_set_header "X-Forwarded-Port" $server_port;
        proxy_set_header "X-Forwarded-For" $proxy_add_x_forwarded_for;
        proxy_set_header "X-Real-IP" $remote_addr;
        proxy_set_header "Host" $host;
        access_by_lua_block {
          client:check(ngx.var.remote_addr)
        }
        proxy_pass $backend;
      }
    }

本地运行

在此仓库中创建一个 .env 文件,其中包含必要的环境变量(以下有文档)。

然后运行

    $ make build
    $ make run_dev

然后你就可以通过 curl http://localhost:80 访问这个代理了。

环境变量

注意

环境变量中的引号对 nginx 很重要。如果您在 Docker 中使用 --env-file,请不要使用引号。

    # required
    backend=http://<>               # URL to proxy to
    IPREPD_URL=http://<>            # iprepd url
    IPREPD_API_KEY="api-key"        # iprepd api key
    IPREPD_REPUTATION_THRESHOLD=50  # iprepd reputation threshold to block on
    
    #
    # optional
    #
    IPREPD_TIMEOUT=10  # iprepd client timeout in milliseconds (default 10ms)
    IPREPD_CACHE_TTL=60 # iprepd response cache ttl in seconds (default 30s)

作者

AJ Bahnken (ajvb)

许可证

mozilla2

依赖项

版本