3

让 nginx 提供带有 url 之类的静态文件,http://foobar.tld/<random_dir>/<file_md5sum_as_filename>如果我在 url 的末尾指定?f="filename.filetype"- nginx 在末尾解析该查询字符串(如果已指定)并准备新的内容处理匹配指定的参数,并且没有任何动态后端,这是不可能的.

或实例http://foobar.tld/<random_dir>/<file_md5sum_as_filename>?f="foobar.pdf"

这样的事情可以用 nginx/lua 模块完成吗?有没有人有任何有用的例子或做过类似的事情?

4

2 回答 2

9

纯 Nginx 配置

location / {
  if ($arg_f) {
    add_header Content-Disposition "attachment; filename=$arg_f";
  }
}
于 2012-11-30T08:43:25.293 回答
3

使用 nginx-lua 确实可以做到这一点;特别是header_filter_by_lua指令。

像下面这样的东西应该可以解决问题:

location / {
  header_filter_by_lua '
    local args = ngx.req.get_uri_args()
    if not args.f then return end

    ngx.header["Content-Disposition"] = "attachment; filename=" .. args.f
  ';
}
于 2012-11-30T08:13:03.157 回答