2017-07-27 14 views
1

openrestyをプロキシサーバーとして使用しています。これはアップストリームからの応答を変更する可能性があります。 body_filter_by_lua *の前に指令header_filter_by_lua *が実行されます。しかし、body_filter_by_lua *のContent-lengthを変更し、その時点でヘッダを送信しました。openrestyのbody_filter_by_lua *でContent-lengthを変更する方法

body_filter_by_lua *でアップストリームからの応答が変更された場合の正しいContent-lengthの設定方法は?

ありがとうございました! https://github.com/openresty/lua-nginx-module#body_filter_by_luaから

答えて

0

Luaのコードは、応答本体の長さを変更することができる場合、それは、ストリーミング出力を強制するヘッダフィルタ内のContent-Lengthレスポンスヘッダ(もしあれば)を常にクリアする必要があります、

location /foo { 
    # fastcgi_pass/proxy_pass/... 

    header_filter_by_lua_block { ngx.header.content_length = nil } 
    body_filter_by_lua 'ngx.arg[1] = string.len(ngx.arg[1]) .. "\\n"'; 
} 

のように私はnginxのは、それが動作します。この場合、http://greenbytes.de/tech/webdav/rfc2616.html#chunked.transfer.encoding(テストしていない)

+0

おかげで、使用することを期待しています。 nginxは、ヘッダフィルタ内のContent-Lengthレスポンスヘッダ(存在する場合)をクリアした後、Chunked Transfer Codingを設定します。 –

関連する問題