Hello!
2014-10-15 23:47 GMT-07:00 yang.yang:
> ngx.header.xxx 调用是可以在access阶段执行的,那么比如我自定义了一个头ngx.header["xxx"] = xxx,
> 然后通过proxy代理获取输出的内容和输出头,并且刚好这个输出头中也包含了之前在access阶段定义的头,这样最终的输出头就包含了两个这样自定义的头,这个应该不是我们想要的结果。
这个是 ngx_proxy 模块的行为,即它只会追加响应头,而不会覆盖已有的响应头。
> 我们其实希望是只输出我们在access阶段定义的头,但是如果自定义是在header-filter阶段调用则会覆盖proxy代理输出的头。
>
在 header_filter_by_lua 的上下文中,你也选择不覆盖,你只需要在 Lua 代码里检查 ngx.header.xxx
是否已定义,如果未定义,再添加。当然,你也可以选择覆盖或者追加。这毕竟是 Lua,随便你玩了。
Regards,
-agentzh