eval_override_content_type
指令 `eval_override_content_type` 允许您为已评估的子请求的响应指定自定义内容类型。
Evaluate memcached or proxy response into a variable
·
httpserverlocation
语法eval_override_content_type content_type;
默认值none
上下文http, server, location
参数1
说明
指令 eval_override_content_type 与 NGINX 的 eval 模块结合使用,尤其适用于处理返回内容的子请求。该指令允许您手动为由求值变量生成的响应设置 Content-Type header。默认情况下,响应会继承原始请求或子请求的 Content-Type;但在返回的内容不同或需要特殊处理的情况下,该指令允许对 Content-Type 进行显式控制,从而确保客户端正确解释响应。
要使用此指令,指定一个定义所需内容类型的单个参数,例如 'text/plain' 或 'application/json'。它可以放在 HTTP、server 或 location 上下文中,当响应的正常处理不会分配适当类型时,这一点尤为重要。由于该指令允许在处理动态内容的 location 中注入内容,因此在响应类型根据后端处理或应用逻辑而变化的场景中能有效发挥作用。
在实现此指令时,必须仔细考虑被求值变量的预期输出,所指定的内容类型应与该内容的格式相对应,否则客户端可能会误解数据。
配置示例
location /example {
eval_override_content_type application/json;
eval $data {
backend_response;
}
if ($data ~ '"key": "value"') {
add_header X-Custom-Header 'Found value';
}
}⚠
确保指定的内容类型与实际返回的内容相匹配;否则,客户端可能会误解响应。
⚠
配置错误可能导致意外行为,尤其是在与其他内容处理指令(例如 proxy_set_header)结合使用时。
⚠
未定义此指令可能导致不期望的内容类型被发送到客户端。