问题标签 [varnish-vcl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5341 浏览

regex - 用清漆+正则表达式替换页面中的内容

如果我希望我的清漆缓存服务器在提供或存储页面(vcl_fetch?)之前从后端替换页面内的内容(即:更改 div 上的类),如何做到这一点?

我想使用简单的正则表达式来执行替换,因为我想它在清漆中本机支持。

0 投票
2 回答
6427 浏览

varnish - Varnish 从 X-Forwarded-for 中删除公共 IP

我面临一个问题,即在特定情况下清漆没有发送中间代理 IP 或公共 IP。场景如下:

  • 一些酒店/公司配置了 squid 代理,所有 Internet 流量都通过 Squid 路由。

  • 访问我公司网站的用户首先点击负载均衡器,然后是 Varnish,然后是 Apache

  • Apache 配置了 mod_geoip。我网站上的代码根据 IP 地址进行国家/地区重定向。

问题 :

  • 当用户(在该 squid 代理后面)访问负载均衡器后面的我公司的网站时 -> VARNISH -> Apache - 这里 apache 仅获取内部 IP(他的私有 IP)和负载均衡器内部 IP 作为 X-forwarded-for 并因此基于 IP重定向失败!

在 Apache 日志(配置为记录 X-Forwarded-IP)中,我看到用户私有 IP 和我的负载均衡器私有 IP。

172.10.5.10,LoadBalancerIP - - [.......]

  • 同一用户在访问另一个没有 Varnish 的站点时,点击负载均衡器 - > Apache - 这里 apache 将用户私有 IP 和用户公共 IP 作为 X-forwarded-for 和基于 IP 的国家/地区重定向工作正常。

在 Apache 日志(配置为记录 X-Forwarded-IP)中,我看到用户私有 IP,然后他的公共 IP 也被记录。

172.10.5.10,公共IP - - [.......]

我的清漆配置如下。

PS:我已经用谷歌搜索了我能找到的所有链接,每个链接都给出了以下 Varnish 配置

现在要解决这个问题,我不得不绕过 varnish,现在网站流量直接到达 Apache,但我需要让 Varnish 回到原位,以从缓存和 Speedy 交付中获取服务器内容。

如果有人可以指导我如何解决此问题,将不胜感激。

谢谢!

0 投票
2 回答
1258 浏览

caching - Varnish:如何将命中/未命中统计信息发送到后端

我希望你能帮忙

我有一个动态生成图像的图像服务器。我正在使用清漆来缓存生成的图像。

我需要记录清漆收到多少请求(每张图像)以及它是命中还是未命中(通过被标记为未命中)。目前,我正在将带有命中/未命中的访问日志写入文件,然后使用 crontab 处理此访问日志文件并将数据写入我的数据库...

我想做的是:

让 Varnish 向我的后端发出请求,通知它缓存命中(如果可能,还有响应大小(字节))。然后我的后端可以保存这些数据......

这完全有可能吗?如果可以,怎么办?


万一有人感兴趣:

  • 2 个清漆实例,每个实例有 1 个(java+tomcat)后端。
  • 服务根据请求中的要求操作并生成每个图像......

以下是每天:

  • 超过 3500 万的页面浏览量,其中每个页面至少包含 3 张图片。
  • Varnish 收到大约 3+ 百万个图像请求(图像也被浏览器缓存)。
  • Varnish 有 87% 的命中率
  • 命中的响应时间为几微秒
  • 未命中的响应时间为 50 毫秒到 1000 毫秒,具体取决于图像的大小(源和输出)
0 投票
1 回答
579 浏览

ruby - ruby on rails 应用程序使用清漆缓存管理 cookie

我想用我新部署的 Rails Web 应用程序实现清漆。

Rails 版本 3.2.12 与

Ruby 1.9.2p318(2012-02-14 修订版 34678)[i686-linux]

在我的应用程序中,用户身份验证是由 cookie 完成的,但是当 cookie 存在时,varnish 不会缓存内容。所以我发现对于登录的用户,varnish 正在将请求转发到我的应用程序。我对 varnish 很陌生,不知道如何解决这个问题。可能是我需要在清漆配置文件中放置一些块。但事情是实时的,用户正在使用我的应用程序。我已经停止了清漆。任何共同的帮助都会得到真正的应用。

0 投票
2 回答
914 浏览

varnish - 在 VCL 中交付对象之前清漆类似 S3 的签名限时请求

这个问题可能看起来有点奇怪,但是是否有可能使用 VCL 中的穷人解决方案来解析由引用者(主要)创建的签名请求(使用共享密钥,也就是 HMAC 的穷人解决方案)站点,并且仅在签名正确且(已签名)时间戳未过期的情况下才从清漆中提供内容?

也就是说,类似于 Amazon S3 的工作方式,您可以轻松地为您的 S3 对象创建一个签名的临时 URL,该 URL 将在定义的秒数内过期。

注意:这里我不是在谈论缓存对象过期,而是客户端的 URL 过期。

当您只想向用户提供临时 URL 以防止长期盗链而不检查引荐来源网址时,它会很方便。

所以 - VCL 中的临时 URL(最好在 vcl_recv 中)的一个糟糕的解决方案,使内部对象过期)。不制作VMOD可以吗?

编辑:

我发现了另一种使用 Varnish 授权内容的方法:

http://monolight.cc/2011/04/content-authorization-with-varnish/

但这仍然不是我想要实现的。

此致!

0 投票
2 回答
2786 浏览

magento - Magento Multi language store with varnish

多语言 Magento 商店如何使用 Varnish。varnish 中是否有可用的配置,所以我们可以基于 cookie 创建缓存?

0 投票
1 回答
315 浏览

varnish - 清漆不适用于域名的 www 版本

我在运行两个不同域上的两个站点的服务器上设置了清漆,在两个域前面没有 www 的情况下,清漆工作完美,我在这个 pastebin 中附加了 vcl 文件,我想这是某个地方的基本错误配置,但我可以'不知道在哪里 - 有人知道解决方案吗?

http://pastebin.com/CF37isis

0 投票
2 回答
27957 浏览

apache - 更改 httpd 配置上的侦听端口以进行 Varnish 配置

我在我的 CentOS 服务器上安装了 Varnish Cache。我正确地尝试了 do 配置,但是当我阅读许多文档时说我将 apache 端口更改Listen 80Listen 8080. 但我在我的服务器上找不到任何 Listen 80 线路,/etc/httpd/conf/httpd.conf但我找到了0.0.0.0:80线路。是一样的吗?如果这些是相同的,当我更改我的网站时不起作用。

我知道我犯了巨大的逻辑错误,但我无法理解。

谢谢

0 投票
1 回答
732 浏览

nginx - Nginx and Varnish only serving up welcome page

I've installed and configured Nginx and varnish on a new Ubuntu 12.04 server. After upgrading Nginx to 1.4.1, I had to update some configuration settings. Now I am only seeing the Nginx "Welcome to nginx!" page.

One note, I have to access this site via the direct IP address until we update our DNS settings to the new server, not sure if that matters.

Here are my configurations:

Nginx default, /etc/nginx/sites-available/default:

Varnish default VCL, etc/varnish/default.vcl

Varnish, /etc/default/varnish

0 投票
1 回答
1155 浏览

caching - 如何配置 Varnish 以缓存范围请求?

我正在尝试将 Varnish 配置为缓存范围请求。我注意到该http_range_support选项,但我读过的所有内容都表明这将在满足请求之前尝试缓存整个文件。是否可以在不需要缓存整个文件的情况下这样做?