This module creates variables, whose values depend on the IP-address of the client.
Example configuration:
geo $geo {
default 0;
127.0.0.1/32 2;
192.168.1.0/24 1;
10.1.0.0/16 1;
}
syntax:*geo [$ip_variable] $variable { ... }*
default: none
context:*http*
The directive describes the dependency of the value of a variable on the IP-address of a client. By default, the IP-address used for the lookup is $remote_addr, but since version 0.7.27 it is possible to specify which variable should be used.
geo $arg_remote_addr $geo {
...;
}
Addresses are assigned in the form CIDR. Furthermore, there are four special parameters:
Example of the description:
geo $country {
default no;
include conf/geo.conf;
127.0.0.0/24 us;
127.0.0.1/32 ru;
10.1.0.0/16 ru;
192.168.1.0/24 uk;
}
In the file conf/geo.conf:
10.2.0.0/16 ru;
192.168.2.0/24 ru;
The value will be the the one with maximum agreement. For example, the IP address 127.0.0.1 will get the value "ru", but not "us".
Example with ranges:
geo $country {
ranges;
default no;
127.0.0.0-127.0.0.0 us;
127.0.0.1-127.0.0.1 ru;
127.0.0.1-127.0.0.255 us;
10.1.0.0-10.1.255.255 ru;
192.168.1.0-192.168.1.255 uk;
}