<!-- review: finished -->

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

# Sub

该模块是一个过滤器，通过将一个指定字符串替换为另一个字符串来修改响应。

当从源代码 [构建](https://cn.angie.software//angie/docs/installation/sourcebuild.md#sourcebuild) 时，
此模块默认不被构建；
它应通过
`‑‑with‑http_sub_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-44"></a>

## 配置示例

```nginx
location / {
    sub_filter '<a href="http://127.0.0.1:8080/'  '<a href="https://$host/';
    sub_filter '<img src="http://127.0.0.1:8080/' '<img src="https://$host/';
    sub_filter_once on;
}
```

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

## 指令

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

<a id="sub-filter"></a>

### sub_filter

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

设置要替换的字符串和替换字符串。匹配要替换的字符串时不区分大小写。要替换的字符串和替换字符串可以包含变量。在同一配置级别上可以指定多个 `sub_filter` 指令。这些指令仅在当前级别未定义 `sub_filter` 指令的情况下才会从上一级配置继承。

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

<a id="sub-filter-last-modified"></a>

### sub_filter_last_modified

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

允许在替换期间保留原始响应的 `Last-Modified` 头字段，以便于响应缓存。

默认情况下，由于响应内容在处理过程中被修改，头字段会被移除。

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

<a id="sub-filter-once"></a>

### sub_filter_once

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

指示是否仅查找每个要替换的字符串一次或重复查找。

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

<a id="sub-filter-types"></a>

### sub_filter_types

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `sub_filter_types` mime-type ...;   |
|--------------------------------------------------------------------------------------|-------------------------------------|
| 默认值                                                                                  | `sub_filter_types text/html;`       |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location              |

除了 `text/html` 外，还在指定 MIME 类型的响应中启用字符串替换。特殊值 "\*" 匹配任何 MIME 类型。
