Articles of 清漆

使用nginx和varnish的Django移动模板检测

我试图得到django-mobile (使用不同的模板名称空间,取决于设备types)当varnish和nginx时。 我想我已经想通了,但是用我目前的设置,似乎nginx只使用查询参数设置cookie而不是头,所以事情只有在一个额外的重新加载后才会改变。 这是如此复杂的原因是,清漆可以caching给定url的页面的两个版本(完整和移动)。 清漆configuration sub vcl_hash { hash_data(req.http.X-Flavour); hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (hash); } nginxconfiguration location / { # default flavour set $flavour "full"; # autodetect mobile flavour if ($http_user_agent ~* "(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino") { set $flavour "mobile"; } # get previously set flavour from […]

清漆清除 – 在浏览器上刷新

我们使用varnish在2台运行drupal的Web服务器上代理/caching内容。 这样说的话,一切似乎都已经到了,页面正在被caching,drupal能够做出清除请求等等。 然而,我们看到一个奇怪的问题,当你调出页面并进行硬刷新(shift +刷新)时,我们得到一个'Error 200 Purged'的报告。 这只发生在硬刷新。 随后的刷新将返回页面。 configuration是一个简单的清除块,每个公共文档。 我们在这里做错了什么,这样硬刷新导致这个错误? # Allow purging if (req.method == "PURGE") { if (!client.ip ~ purge) { # Return Error 405 if not allowed. return (synth(405, "Forbidden – Not allowed.")); } return (purge); } 错误+ shift +刷新: 在此事先感谢您的任何指示。

清漆不能与最后修改

我是新的清漆,并扭转一般的代理。 我在一个像博客那样工作的应用程序中testingVarnish,在这个应用程序中,我有一个“updated_at”的页面,一旦页面更新,这个页面就会改变。 因此,我决定我的caching策略应该基于最后修改的标题。 原因是用户希望在后台修改页面后立即看到更改。 除此之外,我明白我可以添加一个s-maxage与必须重新validationcaching控制,所以如果最后修改没有改变光油甚至不会尝试提出新的要求。 我也为浏览器添加了一个expire,所以会有一个客户端caching。 因此,浏览器甚至不会要求清漆再次向Apache发出请求。 但是,我注意到,caching控制s-maxage优先于最后修改,即使使用must-revalidate。 而且,即使我不添加caching控制,“最后修改”也不起作用。 清漆使用默认的ttl,没有任何反应。 我究竟做错了什么? 我正在使用Symfony,这是头文件: $response = new Response(); $response->setPublic(); // expiration model for the browser cache (EXPIRE) // the browser will only make a new request to Varnish again after ten minutes (600 seconds) $date = new \DateTime(); $date->modify('+600 seconds'); $response->setExpires($date); // expiration model for Varnish (CACHE-CONTROL) […]

nginxredirect没有端口

我有一个Nginx的301redirect问题。 它总是通过本地端口redirect到一个URL。 情况如下:网站正在运行Cloudflare,完整的https。 CF将http请求发送到varnish接受它们的服务器。 清漆然后将请求传递给nginx,它与FPM一起处理其余部分。 Nginx运行在8080端口。我在Nginx中创build一个301redirect,就像我通常做的那样: location = /url1 { return 301 /url2; } Nginx然后redirect到URL,但是添加它运行的原始主机名和端口(8080)。 所以我将port_in_redirect设置为在服务器configuration中closures。 那工作一半。 它会将一个http URLredirect到https(不提到端口8080)。 它会redirect一个https URL到http,虽然,循环。 我怎样才能确保这不会发生? 我想知道是否有可能知道Cloudflare也在为请求提供服务。

我正在努力configuration清漆来说明语言的cookie

我相当新的清漆caching世界,我需要优化一个很慢的Wordpress应用程序。 我今天做了大量的研究,并取得了一些进展,但是我坚持使用语言cookie的configuration。 所以,应用程序设置一个名为qtrans_front_language的cookie,指示前端需要使用哪种语言。 我想caching所有的页面清漆,但我不能忽略这个cookie,否则我不能在一个页面caching后切换语言,并从不同的浏览器同时浏览时,我得到奇怪的行为。 我正在考虑在caching中添加语言定义(例如“en”),以便每个页面都有自己的caching条目,下次浏览时我会得到一个HIT。 我的问题是,这个cookie是由后端设置,但是,如果我不“放弃”后端cookie,我的网页永远不会caching清漆。 这是我迄今为止: vcl 4.0; # Import directors and std library. import directors; import std; # Backend backend default { .host = "my_ip_here"; .port = "80"; .connect_timeout = 600s; .first_byte_timeout = 600s; .between_bytes_timeout = 600s; .max_connections = 800; .probe = { .url = "/"; .timeout = 1s; .interval = 5s; .window […]

清漆负载平衡 – 所有的数据stream通过清漆使其成为一个瓶颈

当使用清漆作为负载均衡服务器时,是否所有数据都通过单一清漆负载平衡器,从而在为数千个并发访问者提供服务的优化网站上以上载速度瓶颈?

Nginx,Varnish 4.1后端抓取失败

我可以通过https和admin部分访问站点,但是不能访问非https / guest或任何应该caching的内容。 varnishadm -S /etc/varnish/secret -T localhost:6082 debug.health Connection failed (localhost:6082): (null) Varnishlog Begin bereq 2 fetch Timestamp Start: 1489151629.565881 0.000000 0.000000 BereqMethod GET BereqURL / BereqProtocol HTTP/1.1 BereqHeader Accept: text/html, application/xhtml+xml, image/jxr, */* BereqHeader AcceptLanguage: enGB BereqHeader UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 BereqHeader Host: […]

如果授权标头存在,则禁用mod_cache

我的网站为login和注销的用户提供相同的页面。 来自login用户的请求具有授权标头。 我想使用Apache的mod_cache来为caching页面提供只注销用户。 从一个新的服务器开始,我可以用Authorization头做出请求,而不会被caching。 如果我以注销用户的身份发出请求,请求将被caching。 问题在于使用Authorization头的后续请求会返回caching的结果。 我如何禁用mod_cache的授权头的请求? 编辑:当我写这个,我想出了一个解决scheme似乎工作。 RequestHeader set Cache-Control max-age=300 "expr=-z %{HTTP:Authorization}" 这将在每个没有授权标头的请求上设置一个Cache-Control标头。 有趣的是,login请求的响应现在包含标题“Vary:Authorization”。 这是一个很好的解决scheme? 我应该使用清漆,而不是mod_cache? 谢谢

有人可以分享他们的Varnish VCL在未来设置到期吗?

看起来有十几个页面告诉你如何为文件设置“过期”标题,但是没有一个是真正正确的。 现在,我的VCL是: if (req.url ~ "^/media/") { set beresp.ttl = 3600s; set beresp.http.expires = beresp.ttl; set beresp.http.age = "0"; unset beresp.http.set-cookie; } 并且浏览器不断在/ media /下为每个请求重新请求文件。 有人可以共享一个VCL片段,实际上告诉浏览器caching对象的时间只要Varnish,而不是每次重新请求它? 我的回复标题是: Server Apache/2.2.14 (Ubuntu) Last-Modified Sun, 15 Aug 2010 22:26:50 GMT Etag "141d8-184e-48de4364e3e80" Vary Accept-Encoding Content-Encoding gzip Content-Type text/css Expires 3600.000 Content-Length 1802 Date Mon, 16 Aug 2010 12:16:48 […]

高请求时间

我有很高的HTTP请求执行时间(例如13s中的42KB)。 我正在使用haproxy来平衡stream量。 静态文件是由varnish加速器后面的lighttpd服务器。 所以……应该在光速以下服务:P http://img580.imageshack.us/g/34411388.png/ 长DNS查找:pic1 长时间接收:pic2 模拟下载:pic3 我使用GoogleDNS。 这些服务器在美国。 首先,我添加了IP到/ etc / hosts来省略DNS查询。 其次,我将静态移植到单独的机器上,省略了haproxy。 就这样,它直接连接到清漆。 交通不是很大,因为这只是发展,也是在生产中发生的。 http://img580.imageshack.us/g/34411388.png/ 更改后:pic4 这个好一点,但还是很慢