标签: varnish

如何将 Nginx 设置为缓存反向代理?

我最近听说 Nginx 为其反向代理功能添加了缓存。我环顾四周,但找不到太多关于它的信息。

我想将 Nginx 设置为 Apache/Django 前面的缓存反向代理:将一些(但不是全部)动态页面的 Nginx 代理请求发送到 Apache,然后缓存生成的页面并从缓存中为这些页面提供后续请求。

理想情况下,我想以两种方式使缓存无效:

  1. 设置缓存项目的过期日期
  2. 显式地使缓存项无效。例如,如果我的 Django 后端更新了某些数据,我想告诉 Nginx 使受影响页面的缓存无效

是否可以设置 Nginx 来做到这一点?如何?

nginx proxy varnish reverse-proxy

149
推荐指数
6
解决办法
17万
查看次数

订购: 1. nginx 2. 清漆 3. haproxy 4. 网络服务器?

我见过有人建议将所有这些组合在一个流程中,但它们似乎有很多重叠的功能,所以我想深入了解为什么您可能想要在访问实际 Web 服务器之前通过 3 个不同的程序。

nginx:

  • ssl:是的
  • 压缩:是
  • 缓存:是
  • 后端池:是

漆:

  • ssl:不(stunnel?)
  • 压缩:?
  • 缓存:是(主要功能)
  • 后端池:是

快乐代理:

  • ssl:没有(stunnel)
  • 压缩:?
  • 缓存:无
  • 后端池:是(主要功能)

将所有这些链接到您的主要 Web 服务器之前是否只是为了获得它们的一些主要功能优势?

让这么多守护进程一起做类似的事情似乎很脆弱。

您的部署和订购偏好是什么?为什么?

nginx web varnish haproxy

53
推荐指数
5
解决办法
2万
查看次数

我在哪里可以找到清漆日志文件?/var/log/varnish 为空

我正在尝试在 Ubuntu 环境中读取 Varnish 服务器的日志文件。

实际上,我以前从未使用过 Varnish。

所以......我cd到/var/log/varnish,但文件夹是空的。

它告诉我我必须配置我的清漆服务器来保存日志......这是真的吗?

logging varnish

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

清漆缓存 - 默认 TTL?

我发现我可以在 VCL 文件中按如下方式在 Varnish 中设置 TTL:

sub vcl_fetch {
    # 1 minute
    set obj.ttl = 1m;
}
Run Code Online (Sandbox Code Playgroud)

但是默认设置是什么(假设后端服务器没有设置缓存控制标头)?

cache varnish ttl

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

使用 nginx 的 Varnish 比只使用 nginx 更好吗?

我看到很多关于在 Varnish 中使用 nginx 的讨论,但我不明白为什么。nginx 还不够吗?

Nginx 有 SSI,有反向代理缓存,轻量级,有 SSL,可以使用 cgi、fpm 等。

Varnish 具有相同的功能,但没有 ssl,也没有 cgi 支持。

nginx varnish

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

如何检查选择的 Varnish 缓存大小是否理想?

我已将 Varnish 缓存配置为使用 512 MB 的缓存大小,使用:

varnishd ... -s file,/var/cache/varnish.cache,512M
Run Code Online (Sandbox Code Playgroud)

问题:

  • 如何监控 512 MB 是否太小、太大或还可以?
  • 如何获取缓存的当前使用大小?
  • 如何查看由于缓存已满而从缓存中删除对象的频率?

varnish

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

代理包存储库的最佳实践

我的公司网络中有一组 CentOS 服务器。出于安全原因,大多数服务器没有通用的出站互联网访问权限,除非这是服务器的核心功能要求。

当我需要更新软件包时,这会带来挑战。对于 yum 存储库,我目前从 Internet 镜像所有需要的存储库,并使镜像在 Intranet 内可用。我在我们的五个环境中保存每个 repo 的副本:dev、QA、staging 和两个生产数据中心。

我目前不解决特定于语言的包存储库。当服务器需要从 ruby​​gems、PyPI、PECL、CPAN 或 npm 进行更新时,它们必须获得临时出站互联网访问权限以获取包。我被要求开始镜像 ruby​​gems 和 PyPI,其余的可能会跟进。

所有这些都很笨拙,而且效果不佳。我想用一个环境中的单个缓存代理和其他环境中的四个菊花链代理替换它,以消除完整镜像的复杂性和磁盘开销。此外:

  • 它可以是正向或反向代理;每个包管理器都支持代理服务器或自定义存储库端点,可以是本地镜像或反向代理。
  • 它需要精细的访问控制,因此我可以限制哪些客户端 IP 可以连接到哪些 repo 域。
  • 客户端需要能够跟随重定向到未知域。您的原始请求可能仅限于 ruby​​gems.org,但如果该服务器向随机 CDN 返回 302,您应该能够遵循它。
  • 它应该支持 HTTPS 后端。我不一定需要模拟其他 SSL 服务器,但我应该能够通过 HTTP 重新公开 HTTPS 站点,或者终止并使用不同的证书重新加密。

我最初正在研究反向代理,而 Varnish 似乎是唯一一种允许我在代理中内部解析 302 重定向的代理。但是,免费版 Varnish 不支持 HTTPS 后端。我现在正在评估 Squid 作为转发代理选项。

这似乎应该是企业网络中一个相对普遍的问题,但我很难找到其他人如何解决这个问题的例子。有没有人实施过类似的东西,或者对如何最好地这样做有想法?

谢谢!

package-management proxy squid varnish repository

17
推荐指数
3
解决办法
5551
查看次数

防止在 nginx 中重定向时更改端口

我目前有 nginx 设置来通过 Varnish 提供内容。Nginx 监听 8000 端口,varnish 将用户的请求从 80 连接到 8000。

问题是,在某些情况下,尤其是在尝试访问目录时,例如site.com/2010nginx 将请求重定向到site.com:8000/2010/.

我怎样才能防止这种情况?

nginx port varnish redirection

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

Mr. Time To First Byte 的奇怪案例

我有一个基于 Linode 1024 VPS 的网络服务器

  • Ubuntu 11.10
  • nginx 1.0.5
  • PHP 5.3.6(带有 PHP-FPM、APC)
  • 清漆 3.0.2

还有一些基于 WordPress 3.3.1 的博客。其中之一是一个简单的博客,带有默认配置、主题和“Hello World”帖子,用于测试服务器。另一个是从其他服务器克隆的博客,有近 10k 个帖子和超过 10k 条评论。这个博客每天有大约 5k 个唯一身份。

服务器在测试博客的 ab 测试上给出了很好的数字,但与克隆博客相同的测试是不可能的:ab 测试负载服务器太多,我不得不停止该过程,这无论如何使 ab 显示这真是糟糕的结果

htop 在正常操作时也显示“正常”负载,但在 ab 测试期间显示正常的大负载

还有一件奇怪的事情发生了(对我来说最重要):第一个字节的时间非常高,但在那之后等待网站加载速度非常快。这可以使用 tools.pingdom.com 等服务轻松测试,从而得出此结果。请注意表示“等待时间”的黄色区域。

为什么会这样?可能的想法:

  • 错误的 PHP-FPM 配置
  • Linode DNS 响应时间很糟糕。废话-测试博客解析DNS很好,TTFB很棒
  • 错误的 Nginx 配置

如果有人需要更多信息,

  • 在这里,您已获得当前克隆的博客nginx 配置文件 ( /etc/nginx/sites-available/muycomputerpro.com )
  • 在这里,你已经得到了当前的my.cnf配置/etc/mysql/my.cnf)(我知道,暂时不缓存,这不会对过去的TTFB差异)
  • 这里你有当前的 PHP-FPM 配置/etc/php5/fpm/pool.d/www.conf

nginx varnish wordpress php-fpm

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

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