首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CImage缓存的nginx重写

CImage缓存的nginx重写
EN

Server Fault用户
提问于 2016-06-09 05:26:43
回答 1查看 110关注 0票数 0

我正在设置一个脚本(http://dbwebb.se/opensource/cimage)来执行一些图像处理,并且我希望缓存结果图像输出。我把那部分做得很好。

我遇到的问题是,当有人从缓存中下载图像时。查询字符串上的问号是在代理url上传递的,因此下载的映像具有默认的"test.jpg&height=200“文件名,该文件名在windows上不重新命名就无法正确打开。

我需要设置某种重写规则,以便第一个"?“字符改为"&“。如果请求只是针对文件名而没有任何其他参数,则仍然需要工作。

我需要添加什么才能使url使用"?“来访问,但以"&”的形式发送到服务器?

原产地

http://origin.example.com/img.php?src=folder1/test.jpg&height=200

当前边缘缓存(现在是这样工作的):

http://cdn.example.com/dynimg/folder1/test.jpg&height=200

所需的边缘缓存:

http://cdn.example.com/dynimg/folder1/test.jpg?height=200 http://cdn.example.com/dynimg/folder1/test.jpg

nginx (重要区域):

代码语言:javascript
复制
location /dynimg/ {

                expires                 14d;

                proxy_pass              http://origin.example.com/img.php?src=;
                proxy_cache_valid       200 302 2880m;
                proxy_cache_valid       404 1m;

        }
EN

回答 1

Server Fault用户

发布于 2016-06-11 12:34:28

您的图像处理应用程序应该发送Content-Disposition header,其中发送所需的文件名。这样,用户的浏览器将使用该文件名而不是从请求的URL派生的文件名。

Nginx代理缓存将保存Content-Disposition头,然后用户将获得正确的文件名。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/782866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档