Nginx 代理实现请求 URL ?attname=XXX 下载文件
浏览器在请求图片、文本、PDF 一类的文件时会直接打开展示而不是下载,如果需要要求浏览器下载,可以通过 Content-Disposition 实现。通过以下配置可以实现和七牛的自定义资源下载名一样的通过 URL 的 attname=XXX
参数指定文件下载功能,Nginx 配置如下:
1 | server { |
正常情况是 ?attname=xxx.rar
,但对于 ?attname=xxx.rar&token=xxx
一类的 URL,虽然极为少见,为了兼容所以上面代码对 $query_string
处理了一下,保证兼容性更广。
我是用 Nginx 代理 MinIO,因为全面兼容 AWS S3 ,在私有存储库预签名 URL 的情况下,可以结合以下文档使用:
https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/API/API_GetObject.html#API_GetObject_RequestSyntax
其中有提到 “You must sign the request, either using an Authorization header or a presigned URL, when using these parameters. They cannot be used with an unsigned (anonymous) request.”,所以匿名访问的情况还是通过 Nginx 配置实现即可。