首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用varnish缓存来自远程服务器的图片

问使用varnish缓存来自远程服务器的图片
EN

Stack Overflow用户
提问于 2016-12-12 02:54:42
回答 2查看 1.1K关注 0票数 0

我正在创建简单的页面,其中将有很多图片。所有图片都托管在远程提供商上(托管在对象存储上,我只有到所有图片的链接)以加快www速度我想使用varnish来缓存此图片,但我有问题:

所有的图片都是用https服务的,所以我已经使用haproxy来终止ssl和下一个流量去varnish,但是如何映射到varnish网站地址,应该是终端用户可见的,比如带有远程地址的https://www.website.com/picture.jpg,哪里是图片托管(https://www.remotehostedpictures.com/picture.jpg)。因此,在最终结果中,用户必须看到第一个链接,远程地址remotehostedpictures.com/picture.jpg是不可见的。

EN

回答 2

Stack Overflow用户

发布于 2016-12-12 21:09:41

在你的varnish vcl_recv中,你应该改变你的请求host头,然后你必须声明remotehostedpictures.com作为你的后端。

最后,你应该有类似这样的东西(代码没有经过测试)

代码语言:javascript
复制
sub vcl_recv {
  if (req.url ~ "\.jpg") {
    set req.http.host = "www.remotehostedpictures.com";
    set req.backend_hint = remote_host;
  }
}

backend remote_host {
  .host = "www.remotehostedpictures.com";
  .port = "80";
}

顺便说一句,当心backend.host中的dns。如果dns解析为多个If,则varnish将使用第一个If。dns解析是在vcl编译时完成的,所以如果dns发生变化,您应该重新加载您的vcl。

票数 0
EN

Stack Overflow用户

发布于 2016-12-21 06:34:15

我认为用Varnish存储图片不是个好主意,因为Varnish会很快填满整个ram (如果你有很多图片),而不是当Varnish满的时候它会清除整个缓存,想象一下当整个缓存被清除并且你的页面上有流量时,服务器上会发生什么。

不久前,我在Varnish中做了这样的缓存,几个小时后,由于清除,我不得不禁用缓存图像(对我来说,最重要的是缓存页面内容)。

在这种情况下,最好的解决方案是CDN。您可以使用Cloudflare等外部服务,也可以在Nginx上做简单的CDN (只服务有Expire头的静态文件)。

希望它能有所帮助:)

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

https://stackoverflow.com/questions/41089847

复制
相关文章

相似问题

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