Nginx,Varnish,ESI – 这会工作吗?

我已经服务后端(一个是nginx +乘客)通过ESI结合。 由于我不想没有gzip / deflate,SSL清漆不能完成这项工作。 所以我想了下面的设置:

http://img693.imageshack.us/img693/38/esinginx.png

你怎么看? 矫枉过正?

你需要清漆吗?

1. nginx可以将结果caching在磁盘或memcached中
2. nginx有SSI
3. nginx有公平的负载平衡器或平衡器
4.最佳实践说,nginx之前的HAProxy是好的。

不要忘记KISS – 你的系统有更多的组件 – 它变得不太稳定。

根据图表,我不确定你想要做什么(什么是ESI?)。 但是,有一个称为“磅”的小型快速负载平衡前端服务器,它将为您处理SSL层。 它可以和端口443上的Varnish(我认为你在端口80上有Varnish)并且直接将SSLstream量传递给nginx(SSL无法caching,因此通过Varnish没有任何意义)。 正常的,未encryption的stream量将按照预期进入清漆。

虽然我没有亲自使用它,但Nginx确实有一个ESI插件:

http://github.com/taf2/nginx-esi

如果ESI是一个绝对必须我build议以下设置

用户 – > Nginx(gzip + proxy + ssl终止) – > Varnish(ESI) – > Ngnix App Server。

这样,您不必将您的ssl,gzip请求委派给一个后端服务器,并将ESI请求委托给另一个后端服务器。

让Varnish从传入的请求中去掉Accept-Encoding头文件,这样你的后端将不会尝试gzip(如果他们被configuration成这样做的话),并且Varnish可以parsingESI包含的后端响应对象。 然后Varnish将呈现给你的Nginx代理完全形成的内容。 这使得Nginx代理可以执行压缩和SSL传递。

我有一个非常类似的设置在生产中运行(没有SSL终止),我发现它的工作相当优雅。

Server Requests per second -------------------------------- G-WAN Web server 142,000 Lighttpd Web server 60,000 Nginx Web server 57,000 Varnish Cache server 28,000 

拯救自己的另一个中间层的障碍(和膨胀)。 只是使用更好的服务器似乎更有效率 。