如何基于文件阻止/允许访问 nginx 而不对其进行修改?

如何基于文件阻止/允许访问 nginx 而不对其进行修改?

我想限制对 nginx 的访问。根据文件拒绝所有 IP 和网络并允许部分 IP 和网络。该文件具有以下结构:

# comment
192.168.0.1
192.168.10.1/24 # another comment
... etc

除非不可能,否则不应修改该文件。它是从互联网上下载的。

ngx_http_access_module 没有从文件读取输入的选项。我可以使用 include 指令,但必须修改文件以匹配 nginx 语法。

nginx 是否可以读取这样的文件而不对其进行修改?怎么做?否则,我将不得不使用 geo 模块:

如果规则很多,最好使用 ngx_http_geo_module 模块变量。

答案1

你可以自动将文件转换为 nginx 可以理解的格式。例如,你可以运行:

awk '/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/{print"allow "$1";"}' your_file >new_file

并将转换后的文件与 nginx 一起使用。

编辑:如果目标是强制nginx要直接解析文件,您可以修改nginx本身:因为http 访问模块以线性方式应用规则,你最好修改geo ip 模块并使用nginxngx_radix_tree_t存储和搜索您的地址。

相关内容