<!-- review: finished -->

<a id="http-geoip"></a>

# GeoIP

根据客户端 IP 地址创建变量并赋值，使用预编译的 [MaxMind](http://www.maxmind.com/) 数据库或其对应版本。

使用支持 IPv6 的数据库时，IPv4 地址将作为映射到 IPv6 的地址进行查找。

当 [从源代码构建](https://cn.angie.software//angie/docs/installation/sourcebuild.md#sourcebuild) 时，默认不构建此模块；应通过 `‑‑with‑http_geoip_module` [构建选项](https://cn.angie.software//angie/docs/installation/sourcebuild.md#configure) 进行启用。

#### NOTE
此模块需要 [MaxMind GeoIP](https://www.maxmind.com/en/geoip-databases) 数据库或类似的 [MaxMind GeoLite2](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data)。

<a id="configuration-example-17"></a>

## 配置示例

```nginx
http {
    geoip_country         GeoIP.dat;
    geoip_city            GeoLiteCity.dat;
    geoip_proxy           192.168.100.0/24;
    geoip_proxy           2001:0db8::/32;
    geoip_proxy_recursive on;
    ...
```

<a id="directives-18"></a>

## 指令

<a id="index-0"></a>

<a id="geoip-country"></a>

### geoip_country

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `geoip_country` file;   |
|--------------------------------------------------------------------------------------|-------------------------|
| 默认                                                                                   | —                       |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | http                    |

指定用于根据客户端 IP 地址确定国家的数据库。使用此数据库时，可用以下变量：

| `$geoip_country_code`   | 两位的国家代码，例如 "RU"，"US"。                         |
|-------------------------|-----------------------------------------------|
| `$geoip_country_code3`  | 三位的国家代码，例如 "RUS"，"USA"。                       |
| `$geoip_country_name`   | 国家名称，例如 "Russian Federation"，"United States"。 |

<a id="index-1"></a>

<a id="geoip-city"></a>

### geoip_city

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `geoip_city` file;   |
|--------------------------------------------------------------------------------------|----------------------|
| 默认                                                                                   | —                    |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | http                 |

指定用于根据客户端 IP 地址确定国家、地区和城市的数据库。使用此数据库时，可用以下变量：

| `$geoip_city_continent_code`   | 两位的大陆代码，例如 "EU"，"NA"。                                                                                                                      |
|--------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|
| `$geoip_city_country_code`     | 两位的国家代码，例如 "RU"，"US"。                                                                                                                      |
| `$geoip_city_country_code3`    | 三位的国家代码，例如 "RUS"，"USA"。                                                                                                                    |
| `$geoip_city_country_name`     | 国家名称，例如 "Russian Federation"，"United States"。                                                                                              |
| `$geoip_dma_code`              | 美国的 DMA 区域代码（也称为 "metro code"），根据 Google AdWords API 中的 [地理定位](https://developers.google.com/adwords/api/docs/appendix/cities-DMAregions)。 |
| `$geoip_latitude`              | 纬度。                                                                                                                                        |
| `$geoip_longitude`             | 经度。                                                                                                                                        |
| `$geoip_region`                | 两位的国家地区代码（地区、领地、州、省、联邦土地等），例如 "48"，"DC"。                                                                                                   |
| `$geoip_region_name`           | 国家地区名称（地区、领地、州、省、联邦土地等），例如 "Moscow City"，"District of Columbia"。                                                                           |
| `$geoip_city`                  | 城市名称，例如 "Moscow"，"Washington"。                                                                                                             |
| `$geoip_postal_code`           | 邮政编码。                                                                                                                                      |

<a id="index-2"></a>

<a id="geoip-org"></a>

### geoip_org

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `geoip_org` file;   |
|--------------------------------------------------------------------------------------|---------------------|
| 默认                                                                                   | —                   |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | http                |

指定用于根据客户端 IP 地址确定组织的数据库。使用此数据库时，可用以下变量：

| `$geoip_org`   | 组织名称，例如 "The University of Melbourne"。   |
|----------------|------------------------------------------|

<a id="index-3"></a>

<a id="geoip-proxy"></a>

### geoip_proxy

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `geoip_proxy` address | CIDR | unix:;   |
|--------------------------------------------------------------------------------------|-----------------------------------------|
| 默认                                                                                   | —                                       |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | http                                    |

定义可信任地址。当请求来自可信任地址时，将使用 `X-Forwarded-For` 请求头字段中的地址。

<a id="index-4"></a>

<a id="geoip-proxy-recursive"></a>

### geoip_proxy_recursive

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `geoip_proxy_recursive` `on` | `off`;   |
|--------------------------------------------------------------------------------------|-----------------------------------------|
| 默认                                                                                   | `geoip_proxy_recursive off;`            |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | http                                    |

如果禁用递归搜索，则将使用 `X-Forwarded-For` 中发送的最后一个地址，而不是与可信任地址匹配的原始客户端地址。如果启用递归搜索，则将使用 `X-Forwarded-For` 中发送的最后一个非可信任地址，而不是与可信任地址匹配的原始客户端地址。
