我们都知道,应用程序和网站一样,其性能关乎生存。但如何使你的应用程序或者网站性能更好,并没有一个明确的答案。代码质量和架构是其中的一个原因,但是在很多例子中我们看到,你可以通过关注一些十分基础的应用内容分发技术,来提高终端用户的体验。其中一个例子就是实现和调整应用栈(application stack)的缓存。这篇文章,通过几个例子来讲述如何使用Nginx缓存。此外,结尾处还列举了一些常见问题及解答。

一、回顾

通过前面四章的学习,学会了Nginx的安装、配置虚拟主机、反向代理、负载均衡,这基本上就是 Nginx 的大概内容了。

我们知道,nginx 其实是一个代理,客户端通过 nginx 才能够访问到后面的应用服务器(tomcat等)。那么如果 nginx 宕机,即使后面的应用服务器没有出现故障,客户端也不能正常访问了,因此保证 nginx 的高可用十分重要。

一、回顾

在上一章《Nginx初探(3)——反向代理》中说到,我们可以为 nginx 配置反向代理,这样 nginx 就能够将客户端的请求根据域名转发给不同的应用服务器,并将应用服务器的结果返回给客户端。

二、负载均衡

在学习完上一章后,你也许会有疑问,一个比较大的网站怎么可能只有一台服务器呢?nginx 能够将请求分配给我这个域名下的多台服务器(服务器集群)吗?

一、什么是反向代理

1.1 正向代理

举一个通俗的例子,因为众所周知的原因,我们无法访问谷歌,但是因为某些原因,我们必须要访问谷歌,这时候我们会买一个“梯子”,既然我们无法直接访问谷歌,我们就去麻烦“梯子”帮助我们访问。

事实上我们还是没法访问谷歌,只是这个“梯子”能够访问,它只是将访问结果返回给我们而已。这里的“梯子”就是一个正向代理,它是帮助客户端也就是我们用户来代理的。

一、引入

我们知道,要想在一台服务器上配置多个网站,服务器有两种方法进行区分,一种是通过端口号,一种是通过域名

若一台主机192.168.30.145上面部署了两个网站,一个是 www.jitwxs.cn ,一个是 www.baidu.com

如果使用端口号区分,若想访问 www.jitwxs.cn 使用192.168.30.145:80,访问 www.baidu.com 使用192.168.30.145:81。这是不友好的,因为 http 默认端口为 80,用户如果忘输了网站的端口,不就进了别人的网站吗,用户体验极差。