我最近听说 Nginx 为其反向代理功能添加了缓存。我环顾四周,但找不到太多关于它的信息。
我想将 Nginx 设置为 Apache/Django 前面的缓存反向代理:将一些(但不是全部)动态页面的 Nginx 代理请求发送到 Apache,然后缓存生成的页面并从缓存中为这些页面提供后续请求。
理想情况下,我想以两种方式使缓存无效:
是否可以设置 Nginx 来做到这一点?如何?
我见过有人建议将所有这些组合在一个流程中,但它们似乎有很多重叠的功能,所以我想深入了解为什么您可能想要在访问实际 Web 服务器之前通过 3 个不同的程序。
nginx:
漆:
快乐代理:
将所有这些链接到您的主要 Web 服务器之前是否只是为了获得它们的一些主要功能优势?
让这么多守护进程一起做类似的事情似乎很脆弱。
您的部署和订购偏好是什么?为什么?
我正在尝试在 Ubuntu 环境中读取 Varnish 服务器的日志文件。
实际上,我以前从未使用过 Varnish。
所以......我cd到/var/log/varnish,但文件夹是空的。
它告诉我我必须配置我的清漆服务器来保存日志......这是真的吗?
我发现我可以在 VCL 文件中按如下方式在 Varnish 中设置 TTL:
sub vcl_fetch {
# 1 minute
set obj.ttl = 1m;
}
Run Code Online (Sandbox Code Playgroud)
但是默认设置是什么(假设后端服务器没有设置缓存控制标头)?
我看到很多关于在 Varnish 中使用 nginx 的讨论,但我不明白为什么。nginx 还不够吗?
Nginx 有 SSI,有反向代理缓存,轻量级,有 SSL,可以使用 cgi、fpm 等。
Varnish 具有相同的功能,但没有 ssl,也没有 cgi 支持。
我已将 Varnish 缓存配置为使用 512 MB 的缓存大小,使用:
varnishd ... -s file,/var/cache/varnish.cache,512M
Run Code Online (Sandbox Code Playgroud)
问题:
我的公司网络中有一组 CentOS 服务器。出于安全原因,大多数服务器没有通用的出站互联网访问权限,除非这是服务器的核心功能要求。
当我需要更新软件包时,这会带来挑战。对于 yum 存储库,我目前从 Internet 镜像所有需要的存储库,并使镜像在 Intranet 内可用。我在我们的五个环境中保存每个 repo 的副本:dev、QA、staging 和两个生产数据中心。
我目前不解决特定于语言的包存储库。当服务器需要从 rubygems、PyPI、PECL、CPAN 或 npm 进行更新时,它们必须获得临时出站互联网访问权限以获取包。我被要求开始镜像 rubygems 和 PyPI,其余的可能会跟进。
所有这些都很笨拙,而且效果不佳。我想用一个环境中的单个缓存代理和其他环境中的四个菊花链代理替换它,以消除完整镜像的复杂性和磁盘开销。此外:
我最初正在研究反向代理,而 Varnish 似乎是唯一一种允许我在代理中内部解析 302 重定向的代理。但是,免费版 Varnish 不支持 HTTPS 后端。我现在正在评估 Squid 作为转发代理选项。
这似乎应该是企业网络中一个相对普遍的问题,但我很难找到其他人如何解决这个问题的例子。有没有人实施过类似的东西,或者对如何最好地这样做有想法?
谢谢!
我目前有 nginx 设置来通过 Varnish 提供内容。Nginx 监听 8000 端口,varnish 将用户的请求从 80 连接到 8000。
问题是,在某些情况下,尤其是在尝试访问目录时,例如site.com/2010
nginx 将请求重定向到site.com:8000/2010/
.
我怎样才能防止这种情况?
我有一个基于 Linode 1024 VPS 的网络服务器
还有一些基于 WordPress 3.3.1 的博客。其中之一是一个简单的博客,带有默认配置、主题和“Hello World”帖子,用于测试服务器。另一个是从其他服务器克隆的博客,有近 10k 个帖子和超过 10k 条评论。这个博客每天有大约 5k 个唯一身份。
服务器在测试博客的 ab 测试上给出了很好的数字,但与克隆博客相同的测试是不可能的:ab 测试负载服务器太多,我不得不停止该过程,这无论如何使 ab 显示这真是糟糕的结果。
htop 在正常操作时也显示“正常”负载,但在 ab 测试期间显示正常的大负载。
还有一件奇怪的事情发生了(对我来说最重要):第一个字节的时间非常高,但在那之后等待网站加载速度非常快。这可以使用 tools.pingdom.com 等服务轻松测试,从而得出此结果。请注意表示“等待时间”的黄色区域。
为什么会这样?可能的想法:
如果有人需要更多信息,
如何告诉 Varnish 显示自定义 html 错误页面而不是默认的“Guru Meditation”消息?