标签: varnish

为什么 Varnish 不缓存?

我正在对 Ubuntu 服务器上的 Varnish 3.x 设置进行故障排除。我通过基于命名的虚拟主机在两个站点上运行 Drupal 7。在尝试让 Varnish 与 Drupal 良好配合之前,我尝试将 Varnish 从缓存中转换为 PNG。

curl -I以下是我从PNG 文件请求中获得的标头:

HTTP/1.1 200 OK
Server: Apache/2.2.22 (Ubuntu)
Last-Modified: Sun, 07 Oct 2012 21:18:59 GMT
ETag: "a57c2-3850-4cb7ea73db6c0"
Accept-Ranges: bytes
Content-Length: 14416
Cache-Control: max-age=1209600
Expires: Thu, 25 Oct 2012 22:55:14 GMT
Content-Type: image/png
Accept-Ranges: bytes
Date: Thu, 11 Oct 2012 22:55:14 GMT
X-Varnish: 1766703058
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Varnish-Cache: MISS
Run Code Online (Sandbox Code Playgroud)

以下是同一文件的标头,但绕过了 Varnish(端口 8080):

HTTP/1.1 200 OK
Date: Sat, 13 Oct 2012 …
Run Code Online (Sandbox Code Playgroud)

cache varnish drupal apache-2.2 drupal7

4
推荐指数
1
解决办法
2万
查看次数

当 Varnish 可以充当负载均衡器时,是否仍然需要 HAProxy?

我想对我的应用程序服务器进行负载平衡,并缓存来自它们的响应。

我在 HAProxy 的网站上阅读了 2012 年的一篇文章,该文章旨在消除 HAProxy 和 Varnish 之间的混淆:

http://blog.haproxy.com/2012/07/04/haproxy-and-varnish-comparison/

这篇文章基本上说HAProxy只是一个反向代理负载均衡器(无缓存),而Varnish是一个反向代理缓存(无负载均衡),因此它们是互补的。

但是今天,我可以在 Varnish 文档中看到它也进行负载平衡:

https://www.varnish-cache.org/trac/wiki/LoadBalancing

所以我只能猜测这个功能是从2012年开始引入的,现在在负载均衡方面直接与HAProxy竞争。

现在考虑到我需要一个反向代理缓存 + 负载平衡器,我是否可以只使用带有 Varnish 的单个服务器,这两者都可以吗?与典型的 HAProxy <-> Varnish 设置相比,可能有什么限制?

varnish reverse-proxy load-balancing haproxy

4
推荐指数
1
解决办法
3937
查看次数

在反向代理后面登录?

我目前在我们的开发网站前运行 Varnish 作为反向代理,在部署到生产之前进行测试。我不得不处理的一件事是日志记录:在直接访问世界中,Apache 将客户端 IP 地址记录到access_logerror_log。当每个客户端连接都来自我们的 Varnish 框时,这会不太有用。

我已经使用SetEnvIf和进行了一些自定义LogFormat,现在我们可以access_log智能地从REMOTE_HOST或记录适当的 IP X-Forwarded-For,具体取决于传入连接的来源。error_log虽然这没有任何作用。据我所知,我无法覆盖此日志中的客户端 IP。

那么,您登录反向代理世界的解决方案是什么?我是否应该取消标准的 Apache 日志记录并将我的精力集中在其他地方,即。在代码中?我对这里的使用统计和安全审计都很感兴趣。

logging varnish reverse-proxy apache-2.2

3
推荐指数
1
解决办法
4701
查看次数

清漆或鱿鱼 - 哪种适合小型办公室的网络缓存?

首先,我不确定 Varnish 是否可以用作网络缓存来加速小型办公室的互联网。

我们有一个办公室,周围有 20 个系统,我们经常浏览同一组网站。

我设置了鱿鱼,它运行了一段时间。但我无法缓存 YouTube 视频,这是我的主要目标。

我最近在玩 nginx 时遇到了 Varnish,但我看到它被用作后端服务器的网络加速器。

我们可以以透明的方式使用 Varnish 而不是 nginx 来进行网络缓存吗?我的意思是说我办公室的人不需要在他们的机器上配置代理。

谢谢,

-拉胡尔

networking squid varnish

3
推荐指数
1
解决办法
6349
查看次数

提供慢速页面时清漆 503

当尝试加载需要更长时间在 Web 服务器上生成的页面时,Varnish 不断抛出 503 Service Unavailable。

在 varnishlog 中,我可以看到一个FetchError c http read error: 0错误,但我不太确定它的含义。

我还尝试增加后端超时:

backend default {
    .host = "x.x.x.x";
    .port = "80";
    .connect_timeout = 600s;
    .first_byte_timeout = 600s;
    .between_bytes_timeout = 600s;
}
Run Code Online (Sandbox Code Playgroud)

后端是一个 Apache 服务器。

所有其他页面工作正常。

有任何想法吗?

varnish 503-error

3
推荐指数
1
解决办法
4115
查看次数

在 512mb VPS 上在 Varnish 后面配置 HTTPD

我在具有 512mb RAM 的专用 VPS 上为客户托管一个网站。在过去的 2 周内,由于 0% 的空闲内存(或空闲交换),它已经两次停机。该站点非常依赖数据库,因为它运行具有 60 多个模块的 Drupal。平均而言(根据网站所有者的说法),每月大约有 6,000 名访问者(约 200 人/天)。不过,它可能会增长得相当快——它刚刚推出不到一年。

所以我坐下来终于掌握了对 Apache 的理解。我以前手动配置过 httpd.conf,但还没有完全理解所有的复杂性。

我了解到我应该通过 MaxClients 以 Mb 为单位计算我的平均 Apache 进程大小,并且这个数字不应该超过系统可用的内存。根据 Top 的说法,每个进程大小都略低于 7%(这大约是 1.4Mb,对吧?)。512/1.5 = 341...这对我来说似乎非常大。我误解了什么吗?起初,我认为我应该按百分比(在本例中为~7)来计算进程大小。也许我第一次是对的?

这为其他操作系统进程提供了一点空间。

数据库 (MySQL) 在同一台主机上。

我的问题是双重的。1) 我正在考虑安装 Varnish 以帮助减少数据库负载(几乎所有访问者都未经身份验证),加快初始响应时间等......对于一个只有这么少内存的系统,我疯了吗?如果我这样做,我正在考虑给它 256Mb。想法?显然,事情不会在缓存中停留很长时间。256/7 = ~36 页。然而,我希望“主要”页面将被缓存。主页和主页后面的一些主要页面将占用大量数据库,我想尽可能减少磁盘 IO 量。

2) 如果我确实安装了 Varnish,我想知道是否应该将 Apache 设置调整为当前设置的一半,因为我已经给了 Varnish 一半的内存。在这种低级配置中,Varnish 和 Apache 之间是什么关系?

httpd varnish

3
推荐指数
1
解决办法
2320
查看次数

Varnish 通常放在 Rails 网络堆栈中的什么位置?

我在 Unicorn 上部署了一个生产 Rails 应用程序,前面有 nginx 用于静态文件服务。我现在需要 Varnish 的一些功能,我想知道如何引入它。

有些人把 Varnish 放在前面,而有些人把 nginx 放在前面。我还没有听说有人使用Varnish 和 Unicorn,但我想这是有效的。

前面有 nginx 的人似乎是为了 gzip 和 SSL 终止而这样做的。SSL 与我的应用程序无关,但 gzip 是。我想清漆很快就会得到它,所以为了简单起见,我可以不用一段时间。

这两种方法还有其他优点/缺点吗?是否有规范的最佳实践布局?

nginx varnish reverse-proxy ruby-on-rails unicorn

3
推荐指数
1
解决办法
2494
查看次数

你如何去除清漆?

我有一个网站目前正在使用 Varnish 来缓存 HTTP 请求,但是出于多种原因,它弊大于利。

我的问题是我找不到阻止所有 http 请求通过它的方法。如果我停止 varnishd 服务,则整个站点都会关闭。varnish statup 选项表明正在使用端口 2000,但 Apache 上似乎没有任何与之相关的内容。Apache 配置指向标准端口 80。

这是 CentOS 机器,带有 Apache 2.2.3、Varnish 2.0.6

varnish

3
推荐指数
1
解决办法
1万
查看次数

varnishd:找不到命令

新机器运行 CentOS 5.6,httpd 和 mysql 安装并运行。我已经通过 yum 安装了 Varnish,没有任何错误,但我无法运行varnished

例如,如果我想运行在 Varnish-wiki 上看到的以下命令:

varnishd -f /usr/local/etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:8080

系统提示我以下响应 -bash: varnishd: command not found

运行varnishadm工作并产生Child in state running ,确认清漆确实在运行。

我也尝试了上述所有方法,sudo但无济于事。我在这台机器上没有 root 访问权限,这可能是导致这种情况的原因吗?还有什么我可以检查的吗?

centos varnish

3
推荐指数
1
解决办法
2160
查看次数

如何根据XID过滤Varnish日志?

我遇到了很少见的 503 错误,这些错误似乎难以确定。Varnishlog 快把我逼疯了,因为我似乎无法从中获得我想要的信息。

我希望看到 Varnish 所看到的客户端和后端通信。我认为记录在 Varnish 的默认错误页面上的 XID 号可以让我从日志缓冲区中过滤出确切的请求。但是,varnishlog 参数的组合没有给我我需要的输出。

以下仅显示客户端通信:

varnishlog -d -c -m ReqStart:1427305652
Run Code Online (Sandbox Code Playgroud)

虽然这仅显示了由此产生的后端通信:

varnishlog -d -b -m TxHeader:1427305652
Run Code Online (Sandbox Code Playgroud)

是否有单行显示整个请求?

linux logging varnish http-headers

3
推荐指数
1
解决办法
7999
查看次数