client.geo.ip_override

STRING, can be read and set, but not unset.

Available in all subroutines.

Override the IP address for geolocation data. The default is to use client.ip as the source for geolocation.

On services that have shielding enabled, the value of client.ip may be the address of another Fastly data center rather than the address of the end user. To access the end-user's geolocation data while on a shield server (which can be determined using the fastly.ff.visits_this_service variable), override the IP address using client.geo.ip_override.

When Fastly sees a request for the first time, we set the Fastly-Client-IP header to the value of client.ip. This value is not updated by upstream Fastly servers, which makes it useful for this purpose:

if (fastly.ff.visits_this_service > 0) {
set client.geo.ip_override = req.http.Fastly-Client-IP;
}

Invalid addresses

It is possible to set client.geo.ip_override to an invalid IP address

set client.geo.ip_override = "xxx";

in which case the various geolocation variables present values to indicate an invalid region. STRING variables are set to the empty string, FLOAT variables are set to 999.0, and INTEGER variables are set to 0.

Try it out

client.geo.ip_override is used in the following code examples. Examples apply VCL to real-world use cases and can be deployed as they are, or adapted for your own service. See the full list of code examples for more inspiration.

Click RUN on a sample below to provision a Fastly service, execute the code on Fastly, and see how the function behaves.

Geo-IP API at the edge

Create an API endpoint for fetching GeoIP data for the requesting browser, implemented 100% at the edge. The response should show your current approximate location, but no requests to any origin servers.

Comprehensive logging

Fastly offers a myriad of different variables that you can log. See and test a large collection here.