Nginx 的 sub_filter
是一个用来在响应内容中进行字符串替换的指令。它是 ngx_http_sub_module
模块的一部分,该模块允许你在服务器返回给客户端的响应中替换字符串。sub_filter
可以在 server
、location
或 if
块中使用。
以下是一些使用 sub_filter
的示例和解释:
基本语法
sub_filter string replacement;
string
:要替换的原始字符串。replacement
:用于替换原始字符串的新字符串。
示例配置
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
# 开启 sub_filter 模块
sub_filter 'original_text' 'replacement_text';
# 设置 sub_filter 替换所有匹配项
sub_filter_once off;
# 设置 sub_filter 的内容类型(可选)
sub_filter_types text/html text/css;
}
}
}
解释
sub_filter 'original_text' 'replacement_text';
:这行配置告诉 Nginx 在响应内容中找到'original_text'
并将其替换为'replacement_text'
。sub_filter_once off;
:默认情况下,sub_filter
只会替换第一个匹配项。通过设置sub_filter_once off;
,你可以让 Nginx 替换所有匹配项。sub_filter_types text/html text/css;
:定义要应用sub_filter
的 MIME 类型。默认是text/html
。
注意事项
sub_filter
模块必须被编译进 Nginx 才能使用。大多数情况下,现代的 Nginx 安装已经包含了这个模块。sub_filter
只能处理文本内容,所以在使用时要确保响应内容的 MIME 类型适合进行文本替换。
通过使用 sub_filter
,你可以方便地对返回给客户端的响应进行内容替换,例如替换页面上的链接、图片路径或其他文本内容。