之前写过用Varnish作为前端承载服务器的文章,不可否认的是,Varnish纯内存缓存的效率绝对超过任何其他缓存服务器,但是Varnish的作者有点洁癖,不肯增加HTTPS支持,在现今看来,确实有点跟不上时代了。

首先需要明确的是,其实最佳方案是Varnish和Nginx各自负责http和https的流量,这样是效率最大化的。我之前一直比较反感Nginx,是因为这货被人称道的优点我全都用不上,而他的缺点却会让我很麻烦。今天折腾他是因为有几个节点需要单独作为文件下载用,所以用他,比较简单一点,也节约内存。

 

安装就不多说了,各个平台的流程大同小异,我用Debian 8,几行命令即可:

 

我这是把官方给的源加入系统列表,那么直接可以安装官方提供的最新稳定版。个人比较反感源代码编译。

首先创建缓存目录:

因为这个目录是我指定在这里,所以需要手工创建。

然后先把默认配置给关掉:

接着编辑一下全局配置文件:

我记不清改过那些了,直接贴内容吧,我的配置文件内容:

有些调试用的我注释掉了,还有性能方面我这暂时没发现瓶颈,你可以根据情况调整。

具体include的路径么,各个系统不太相同,各位要根据自己系统调整,我的文件只确保在Debian 8上面正常运行。

最后就是站点配置文件了,路径为/etc/nginx/conf.d/default.conf,不一定非要用default.conf,只要在这个目录里面的conf文件就可以。

我这的配置:

 

简单说明一下:

1,文件中有3个站点,分别是www.tingtao.net的http和https,以及一个默认站点。默认站点不是必须的。默认站点的listen里需要有“default”关键字。

2,location ~ (wp-admin|\.php)$ 这个条件对于wordpress站点来说其实意义不大,这里只是为了举个例子。怎样可以只用一行就定义多个文件名+路径的形式,我看了很多人写的文章,都没这种写法,明明一段搞定的事情,非要折腾一屏幕……

我个人觉得,对于缓存服务器来说,无非就是缓存和不缓存两种情况,当然有些网站可能需要更细致的根据文件类型设置不同的缓存周期,或者根据不同路径丢到不同的后端服务器,这类需求照着修改就是了,比葫芦画瓢的事情不再多说。

3,实际上不论一个站点是http还是https,都可以从https/http两种后端请求内容,也就是说,http站点也可以从https的后端请求内容,反过来亦可。因为严格界定的话,其实缓存服务器可以理解为“中间人攻击”的一种,哈哈。

那么,也就是说,如果你灵活运用的话,只需要在我的配置文件里面增加一点点rewrite内容就可以实现一个http后端,衍生出http+https的前端。

4,proxy_cache tingtao;这行里面的tingtao对应着顶部的存储区配置,我复制了一点说明,对照修改即可。

5,add_header X-Cache-Status $upstream_cache_status;这一行是增加一个http响应头,方便调试缓存状态。

6,Nginx应该算是内存+硬盘缓存的,更深入的缓存调整细节还是仔细看看文档比较靠谱。Nginx和Varnish都不能取代对方,他们的适用场景不同:

如果配置牛B,内存大,并且是纯http,那用Varnish绝对飞起来;

如果配置差一些,内存小,硬盘大而且是SSD盘,那么Nginx会经济一些;

如果配置差,内存小,还硬盘差,那你最好别用缓存服务器了,这玩意不适合你,硬上的话只会让你的网站更慢 :mrgreen:

 

其他的想起来再补充吧。

Share

发表评论

电子邮件地址不会被公开。 必填项已用*标注