set_escape_uri
该 `set_escape_uri` 指令通过对某些字符进行转义,将指定的值编码为 URI 安全的字符串。
NGINX Set-Misc module
·
httpserverlocationif in serverif in location
语法set_escape_uri variable_name [input_value];
默认值none
上下文http, server, location, if in server, if in location
参数1-2
说明
NGINX Set-Misc 模块中的 set_escape_uri 指令用于将一个字符串变量转换为 URI 转义格式。当原始值包含不适合直接放入 URI 的字符时,这尤其有用。该指令接受一个或两个参数。第一个参数是要设置的变量名,第二个(可选)参数指定要转义的输入数据。如果未提供第二个参数,则假定第一个参数为包含要转义值的源变量。
调用该指令时,它会分析输入字符串并将不安全的字符替换为其百分比编码的等价形式。例如,空格将变为 %20,特殊符号将按 URI 标准进行转义。这对于确保 URL 有效并能被 web 服务器和浏览器正确处理至关重要。该指令可在多种上下文中使用,包括 http、server、location 和条件块,从而在配置中提供灵活性。
配置示例
location /example {
set $user_input $arg_input;
set_escape_uri $escaped_input $user_input;
}⚠
在使用此指令之前,确保要转义的变量已正确设置。
⚠
如果输入变量包含空字节,行为可能不可预测。
⚠
在 if 块中使用 set_escape_uri,如果与其他改变请求流程的指令结合使用,可能导致意外结果。