我正在将我的项目的网络堆栈重组为:nginx -> haproxy -> many (apache/passenger rails) 实例
其中一些目标包括:
图像/样式表/javascript 资产被缓存缓存,带有适当的标题。我们的页面缓存基于内部参数,不应响应典型的缓存控件。为了达到这些目的,我们的配置看起来像
server {
...
location /really_slow_dynamic_content/ {
root /var/www/tmp;
error_page 404 = @fetch;
}
location @fetch {
internal;
proxy_pass haproxy_ip;
proxy_store /var/www/tmp${uri}_cache.html;
proxy_store_access user:rw group:rw all:r;
}
location /assets/ {
proxy_pass haproxy_ip;
proxy_cache assets;
}
location / {
proxy_pass haproxy_ip;
}
}
Run Code Online (Sandbox Code Playgroud)
我不是一个真正的系统管理员,我知道有很多替代/调整/添加可能会有帮助。我也不太明白 proxy_cache 和 proxy_store 之间的区别。所以对于我的实际问题......
在我们将资产移动到 nginx 机器之前,对资产使用 proxy_cache 和对慢速动态内容使用 proxy_store 是否有意义?
此外,如果我应该考虑其他考虑因素或软件,我很想听听它们。谢谢!
自从发布这个问题以来,我意识到我使用的初始配置根本不使用商店,并且(半?)官方 wiki 示例中的 error_page 和内部设置并不是完全可选的(配置在这里更新,因为它似乎正在工作,并且工作配置似乎是这个问题的更好遗产)。因此,使用 store 来创建(并且很少更新)完整页面的速度很慢,并且图像、javascript 等的实际缓存对我们来说似乎工作得很好。我会接受一个答案,因为它至少给了我一个线索来追踪我的问题,但我仍然不知道我是否以它们预期的方式使用这两个指令或者不(好吧,至少不是关于商店,缓存似乎更明显一点)。
小智 3
如果内存正确, proxy_store 存储项目请求的二进制表示,而 proxy_cache 以其基本形式存储该项目的缓存副本。
proxy_cache 实际上是一个多级缓存引擎,适合使用相同密钥存储来自多个站点的内容。
我个人使用 proxy_cache 在我们的每个静态内容服务器上存储超过 20 亿个产品图像。