<!-- review: finished -->

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

# RealIP

该模块用于将客户端地址和可选端口更改为指定头字段中发送的地址和端口。

当 [从源代码构建](https://cn.angie.software//angie/docs/installation/sourcebuild.md#sourcebuild) 时，
该模块默认未构建；
需要通过
`--with-http_realip_module`
[构建选项](https://cn.angie.software//angie/docs/installation/sourcebuild.md#configure) 进行启用。

在来自 [我们的仓库](https://cn.angie.software//angie/docs/installation/index.md#install-packages) 的包和镜像中，
该模块已包含在构建中。

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

## 配置示例

```nginx
set_real_ip_from  192.168.1.0/24;
set_real_ip_from  192.168.2.1;
set_real_ip_from  2001:0db8::/32;
real_ip_header    X-Forwarded-For;
real_ip_recursive on;
```

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

## 指令

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

<a id="set-real-ip-from"></a>

### set_real_ip_from

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

定义已知发送正确替换地址的可信地址。
如果指定了特殊值 `unix:`，则所有UNIX域套接字将被信任。
可信地址也可以使用主机名指定。

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

<a id="real-ip-header"></a>

### real_ip_header

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `real_ip_header` field | `X-Real-IP` | `X-Forwarded-For` | `proxy_protocol`;   |
|--------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|
| 默认                                                                                   | `real_ip_header X-Real-IP;`                                                    |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                                                         |

定义请求头字段，其值将用于替换客户端地址。

包含可选端口的请求头字段值也用于替换客户端端口。地址和端口应根据 [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) 进行指定。

`proxy_protocol` 参数将客户端地址更改为来自PROXY协议头的地址。必须通过在 [listen](https://cn.angie.software//angie/docs/configuration/modules/http/index.md#listen) 指令中设置 proxy_protocol 参数来预先启用PROXY协议。

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

<a id="real-ip-recursive"></a>

### real_ip_recursive

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

如果禁用递归搜索，则与可信地址之一匹配的原始客户端地址被请求头字段中由 [real_ip_header](#real-ip-header) 指令定义的最后一个地址替换。如果启用递归搜索，则与可信地址之一匹配的原始客户端地址被请求头字段中最后一个非可信地址替换。

<a id="built-in-variables-7"></a>

## 内置变量

<a id="v-realip-remote-addr"></a>

### `$realip_remote_addr`

保存原始客户端地址

<a id="v-realip-remote-port"></a>

### `$realip_remote_port`

保存原始客户端端口
