我可以在 NGINX 中执行 GeoIP 阻止而无需为 NGINX Plus 付费吗?
Posted
技术标签:
【中文标题】我可以在 NGINX 中执行 GeoIP 阻止而无需为 NGINX Plus 付费吗?【英文标题】:Can I perform GeoIP blocking in NGINX without having to pay for NGINX Plus? 【发布时间】:2019-01-04 17:39:20 【问题描述】:我是一名 Fedora 29 最终用户,正在寻找一种通过 nginx 执行 GeoIP 阻止的方法,而无需为 Nginx Plus 支付大量美元。我看到 NGINX 可以设置为包含模块,并想询问是否有任何开源模块可用于执行基本的 GeoIP 阻塞。
谢谢,
【问题讨论】:
也许尝试用这个模块编译? nginx.org/en/docs/http/ngx_http_geoip_module.html @RyanZ 这似乎是一个规范文档,而不是实际代码。我看到了一个带有一些 C 代码的 GitHub 存储库,但我不确定是否会这样。 【参考方案1】:您可以通过在 nginx 构建配置中添加“--with-http_geoip_module”来构建 nginx 并从 nginx https://nginx.org/en/docs/http/ngx_http_geoip_module.html 添加 geoip 模块。
然后在您的 nginx.conf 中指定 geoip_country 或 geoip_city 后跟 geoip db 的路径
https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-by-geoip/ 还可以帮助为开源或 nginx plus 设置 geoip
编辑:GeoIP 已弃用,但仍适用于现有安装。
您可以使用 nginx 从源代码 https://github.com/leev/ngx_http_geoip2_module 以与以前类似的方式构建 GeoIP2
这里是较新的 geoip2 数据库Geolite2 Country
【讨论】:
我可能会选择通过源代码编译。我只是更喜欢从 repo 安装它以便于更新。 您会注意到,在发布此答案后仅几天,geoip Maxmind 数据库就被删除了(它们已经被弃用了很长一段时间)。您现在需要 a) 使用 geoip2 构建您自己的 nginx 二进制文件/模块或 b) 升级到 nginx-plus,其中 包括 geiop2。以上是关于我可以在 NGINX 中执行 GeoIP 阻止而无需为 NGINX Plus 付费吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何授予对 nGinx 中 GeoIP [国家] 阻止的特定 IP 地址的访问权限?
Django 无法检测到来自 nginx 的 GeoIP 数据