我们一直在运行 nginx -> uWSGI,现在我们正在评估将 Varnish 作为 nginx 和 uWSGI 之间的缓存层(类似于 http://www.heroku.com/how/architecture)。
但是,nginx 仅支持 HTTP 1.0,因此它必须为每个请求与 Varnish 创建新的连接。
许多人建议在 Varnish 前面运行 nginx,但使用像 Cherokee 这样的程序不是更有意义吗?因为它在后端支持 HTTP 1.1,所以您可以消除 HTTP 连接开销。
答案1
在放入后端缓存层时我们也讨论了这个问题,我们也使用 nginx,但使用 squid 和提供内容的 JVM。
如果您不使用任何 nginx 独有的功能,您可以切换,我们已经构建了几个 nginx 模块。
您应该考虑该连接设置的实际开销与端到端请求相比是多少。对于我们来说,测试时它总是<2ms,即使从内存缓存读取资产也需要超过这个时间才能响应(>5ms)。