Hello! 2014-08-19 18:48 GMT-07:00 fuqiang liu: > 我在ngx里要做这样一个需求,根据输出页面的内容计算一个指纹(如:md5(html),然后在header里输出这个token,该怎么弄呢? 你可以在 ngx_lua 里使用 ngx.location.capture 发起子请求,然后对整个响应体进行处理。见 https://github.com/openresty/lua-nginx-module#ngxlocationcapture > 如果在body_filter_by_lua里搞,1是它是多个chunks组成的,没法完整拿到整个html内容,2是它操作不了header了 nginx 的“body filter”机制的全部意义就在于它的“流式处理”特性。它可以用很小的内存输出很大的响应体数据流,因此数据处理必然是按 chunk 来进行的。既然你需要根据整个响应体数据流的数据来设置响应头,你就没法使用流式处理(毕竟响应头总是先于任何响应体数据来发送的)。而你没法使用流式处理,就没必要使用 output filter 了。这就是为什么我上面建议你使用全缓冲方式的子请求接口。 Regards, -agentzh