User documentation
  1. What is redirection.io?
  2. Starter's guide
  3. What are organizations and projects?
  4. Invite new collaborators
  5. User account and preferences
  6. Using traffic logs
  7. Create a rule
  8. Triggers and markers reference
  9. Actions reference
  10. How to bulk-import or export redirection rules?
  11. Managing instances
  12. Project notifications
  13. Project segmentation
  14. How much does it cost?
  15. Can I use redirection.io for free?
  16. About us

Developer documentation
  1. TL;DR; Fast track
  2. Available integrations
  3. nginx module
  4. Apache module
  5. platform.sh integration
  6. Cloudflare Workers integration
  7. Fastly Compute@Edge integration
  8. Vercel Middleware Integration
  9. Using redirection.io with Docker
  10. How fast is it?
  11. Public API

Agent documentation
  1. Installing the agent
  2. Upgrading the agent
  3. Agent command line options
  4. The agent as a reverse proxy
  5. Agent configuration reference
  6. Minimal configuration
  7. Listening for requests
  8. Forwarding requests to the backend
  9. Virtualhosts
  10. Trusted proxies
  11. GeoIP database
  12. Response compression
  13. Performance tweaks
  14. Access logs
  15. Persisting data in a s3 bucket
  16. Monitoring the agent
  17. Using the agent behind a HTTPS proxy
  18. Agent configuration examples

Managed instances
  1. What are managed instances?
  2. Add a domain to your project
  3. Managed instances limits and quota
  4. Frequently asked questions

Crawler
  1. What is the redirection.io crawler?
  2. Start a crawl
  3. Schedule a crawl
  4. Analyzing the results of a crawl
  5. The crawls list
  6. Crawl credits and pricing
  7. Crawl Errors
  8. Crawler metrics reference
  9. Crawler columns reference

Knowledge base
  1. Create your first redirections
  2. redirection.io rules cookbook
  3. Setting up a redirection server on Azure Cloud
  4. Structured data and Rich Snippets
  5. What is a URL redirection?
  6. Why use URL redirections and how to setup

Legacy versions
  1. Agent 1.x configuration reference
  2. Agent 2.x configuration reference
  3. Legacy integrations
  4. Legacy Cloudflare Workers integration

Changelogs
  1. redirectionio-agent
  2. libnginx-mod-redirectionio
  3. libapache2-mod-redirectionio

GeoIP database

redirection.io supports the creation of rules based on the value of request headers, which has been used for a long time to create rules based on the client's country, using the X-Country-Code header (or any other similar header), if it is set by a proxy or a CDN in front of the agent.

However, all hosting providers and CDNs do not set such headers, and even when they do, the values may not be accurate. To solve this issue, redirection.io has a built-in GeoIP database support, which allows you to create rules based on the client's country without relying on any header set by a proxy or a CDN.

By defining the http.geo_ip configuration in the agent configuration file, you can specify the path to a local GeoIP database file, and the agent will automatically use it to populate request headers that will be available for your rules and will be sent to the backend servers.

redirection.io does not enforce a specific GeoIP database, but it should be a file in the MaxMind DB format.

All GeoIP databases that are in the MaxMind DB format can be used with redirection.io, whatever the organization of the data they contain. For example, in the following example, the headers X-Geo-Country, X-Geo-City and X-Geo-Latitude will be populated with the values of the country.iso_code, city.names.en and location.latitude fields of the GeoIP database found at /path/to/geoip.mmdb.

View in configuration explorer
instance:
    name: 'My Instance'
reverse_proxy:
    listen:
        - 'tcp://0.0.0.0:80'
    forward:
        address: 'backend:8080'
    agent:
        project_key: my-project-key
    http:
        geo_ip:
            path: /path/to/geoip.mmdb
            headers:
                X-Geo-Country: $.country.iso_code
                X-Geo-City: $.city.names.en
                X-Geo-Latitude: $.location.latitude

If a value is not found in the GeoIP database for a specific header, the agent will not set the header in the request. If the path of value (eg. country.iso_code) is not found in the GeoIP database, the agent will log a warning message, and it will not set the corresponding header in the request.

This page has been updated on Mar 30, 2026
Can't find your answer?