我有一个 Openresty 网络服务器,它也使用ledge作为缓存服务器。ledge 正在设置一个“Via”响应标头,该标头公开服务器的主机名,即 fqdn。
Via: 1.1 xyz.example.com
我的 openresty 和 ledge 配置中有这些:
more_clear_headers 'Server';
server_tokens off;
我想完全删除“Via”响应标头。但无法弄清楚如何在壁架上做到这一点:(
我有一个 Openresty 网络服务器,它也使用ledge作为缓存服务器。ledge 正在设置一个“Via”响应标头,该标头公开服务器的主机名,即 fqdn。
Via: 1.1 xyz.example.com
我的 openresty 和 ledge 配置中有这些:
more_clear_headers 'Server';
server_tokens off;
我想完全删除“Via”响应标头。但无法弄清楚如何在壁架上做到这一点:(
假设我们要更改来自上游的响应,我们可以做的是在body_filter_by_lua_block
阶段使用 Lua+nginx,这是其中的一个片段。
server {
listen 8181;
location /media {
alias /media/;
}
}
server {
listen 8080;
location /media {
proxy_pass http://localhost:8181;
# we need to keep this url since we're going to rewrite
set_by_lua_block $original_uri { return ngx.var.uri }
# when the Lua code may change the length of the response body
header_filter_by_lua_block { ngx.header.content_length = nil }
# removing (rewriting) the filters
rewrite_by_lua_block {
local uri = ngx.re.sub(ngx.var.uri, "^/media/(.*)/hls/(.*)$", "/media/hls/$2")
ngx.req.set_uri(uri)
}
# applying the bandwidth min filter
# but we can use the ngx.var.original_uri to build/select the filters
body_filter_by_lua_block {
local modified_manifest = filtering(ngx.arg[1])
ngx.arg[1] = modified_manifest
ngx.arg[2] = true
}
}
这工作得很好!但问题是,这种方式响应将使用分块传输,有些客户端无法处理分块响应,你知道我该如何克服吗?