This module creates variables, whose values depend on the IP-address of the client.

Example configuration:

geo  $geo  {

  default          0;     2;   1;      1;




syntax:*geo [$ip_variable] $variable { ... }*

default: none


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:

  • delete – deletes the specified network (0.7.23).
  • default - the value of variable, if the client address does not correspond to any assigned address. It is possible so to write instead of default
  • include - text file with addresses and values information. Several files can be inluded like this.
  • proxy - specifies the address of proxy server (0.8.7+). NEED MORE DESCRIPTION...
  • ranges – specifies that the addresses specified are in the form of ranges (0.7.23). This directive must be the first.
 geo  $country  {
   default          no;
   include          conf/geo.conf;     us;     ru;      ru;   uk;

In the file conf/geo.conf:      ru;   ru;

The value will be the the one with maximum agreement. For example, the IP address will get the value "ru", but not "us".

Example with ranges:

 geo  $country  {
   default                    no;        us;        ru;      us;      ru;  uk;