{"adoption": {"forks": 214, "observed_at": "2026-08-28T04:03:44.291936+00:00", "stars": 1140}, "canonical_url": "https://ross.abutalabs.com/products/ngx_http_geoip2_module", "card": {"archived": false, "artifact_type": "plugin", "description": "Nginx GeoIP2 module", "domain": ["web-development", "backend", "networking", "apis"], "enriched": true, "function": ["middleware", "networking", "developer-tools"], "health_score": 20, "homepage": null, "language": "C", "license": "BSD-2-Clause", "license_family": "permissive", "maturity": "stable", "member_repos": ["leev/ngx_http_geoip2_module"], "name": "leev/ngx_http_geoip2_module", "platform": [], "pushed_at": "2024-04-02T21:25:17+00:00", "repo": "leev/ngx_http_geoip2_module", "stars": 1140, "tags": ["nginx-module", "geoip", "maxmind", "geoip2", "geolocation", "c", "stream-module", "linux", "web-server", "nginx"], "topics": [], "urls": [], "use_cases": ["serve different content based on visitor country", "block or redirect traffic from specific countries", "log client city and country in nginx access logs", "pass geolocation data to backend apps via fastcgi params", "geolocate clients in nginx stream (TCP/UDP) proxies", "auto-reload MaxMind database files without restarting nginx"], "what_it_is": "An Nginx module that creates variables from MaxMind GeoIP2 databases based on client IP addresses, supporting both IPv4 and IPv6. It works with both the HTTP and stream subsystems and can be built as a static or dynamic module.", "when_to_avoid": ["you don't control nginx compilation or can't load dynamic modules", "you need geolocation in an application server rather than nginx", "you use legacy GeoIP (dat) databases instead of GeoIP2", "you need a pure-Lua or dynamically scripted solution like OpenResty"], "when_to_choose": ["you run nginx and need geolocation lookups at the web server layer", "you want to use MaxMind GeoIP2/GeoLite2 mmdb databases", "you need geolocation for both HTTP and stream traffic", "you prefer a lightweight C module over application-level geo lookups"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ngx_http_geoip2_module", "repo": "leev/ngx_http_geoip2_module", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:44.291936+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:35:32.547904+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "22bae3231caf92717ff1be1b27cca270275f6e289e2afff8a43ec4f29ee8a4cb", "fetched_at": "2026-08-28T04:03:44.291936+00:00", "kind": "readme", "missing": false, "url": "https://github.com/leev/ngx_http_geoip2_module"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4598, "days_push": 883, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}