如何让动态图片地址,在浏览器中转为静态地址,并在浏览器缓存?

发布于 2022-09-12 14:00:06 字数 161 浏览 12 评论 0

比如真实图片地址 http://180.0.0.1?imgid=12345
在浏览器输入 http://domain.com/12345.jpg 会反向代理到真实的地址同时会在浏览器进行图片缓存

nginx 如何配置,能写出详细配置最好了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

漫漫岁月 2022-09-19 14:00:06

可以试下.大概就是这样.

locaton ~ /.*\.jpg {
    rewrite /(.*).jpg /?imgid=$1 break;
    
    expires 30d;
    proxy_set_header Host 180.0.0.1; # 这个地方要把 host 设置为图片保存的原始域名
    proxy_set_header X-Real-IP $remote_addr; # 透传 IP,可要可不要
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 透传 IP 可要可不要
    proxy_pass http://180.0.0.1; # 这个地方如果是ip 还好,如果是域名,还涉及到一个反向代理解析 IP 的问题,需要 nginx 配置中加上一个 dns reslover.
}
半城柳色半声笛 2022-09-19 14:00:06

nginx对这种路径加个expires指令不就完了?就会在响应头带上cache-controlexpires两个头,浏览器就会自动处理了。

至于伪静态的处理,使用rewrite指令进行URL重写就行了

执笔绘流年 2022-09-19 14:00:06
location ~ \.(gif|jpg|jpeg)$ {
   root /var/www/img/;
   expires 30d;
}

expires最简单的写法 ,表示缓存30天, 具体含义网上都有介绍的 expires

对浏览器来说,反向代理出来的地址一直是稳定的,即
http://domain.com/12345.jpg对浏览器来说一直是这个地址,不会变成http://180.0.0.1?imgid=12345的,最多声明这样的数据可以缓存而已。
因为反向代理对浏览器来说是透明的。

情深缘浅 2022-09-19 14:00:06

貌似应该反过来,把访问 /12345.jpg 的请求指向你生成图片的程序,然后传参,搞成 ?imgid=12345。然后再延长缓存时间。

没有调试,思路是这样,你可以试一下:

location ~ "/imgs/(?<page>\d+).jpg$" {
        alias /var/www/image-generator/img.php?imgid=$page;
        expires 30d;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文