要在Nginx过滤器模块中添加Cookie,可以使用ngx_http_add_variable_module模块结合set指令来实现。
首先,确保已经编译安装了ngx_http_add_variable_module模块。
然后,在nginx配置文件中的http块内添加以下代码:
http {
# 定义一个变量用于保存Cookie值
set $my_cookie '';
# 在server或location中定义过滤器模块
filter {
# 过滤器执行前的初始化操作
init_by_lua_block {
ngx.var.my_cookie = ngx.req.get_headers()["Cookie"] or ""
}
# 过滤器执行时的处理逻辑
body_filter_by_lua_block {
-- 可以在这里对响应内容进行修改,并设置新的Cookie值
-- 示例:将新的Cookie值赋给$my_cookie变量
ngx.var.my_cookie = "new-cookie-value"
-- 示例:将新的Cookie值设置到响应头部
ngx.header["Set-Cookie"] = "cookie-name=" .. ngx.var.my_cookie .. "; Path=/; Expires=Wed, 09 Jun 2021 10:18:14 GMT"
}
}
}
上述示例中,通过ngx.req.get_headers()["Cookie"]获取请求头中的Cookie值,并存储在$my_cookie变量中。然后,在body_filter阶段,你可以根据需求对响应内容进行修改,并设置新的Cookie值。
请注意替换示例中的”new-cookie-value”为你需要设置的具体值,并根据需求修改”Set-Cookie”头部的其他参数。
保存并重启Nginx后,过滤器模块将会在请求和响应时执行,并进行Cookie的处理。
内容由零声教学AI助手提供,问题来源于学员提问




