一、Nginx的主要应用场景
我们看上面那张图,一个web请求从红色的箭头访问过来后,会先经过Nginx,再到我们的应用服务比如tomcat、Django,然后再去访问redis或者Mysql这样的数据库提供基本的数据功能。
应用服务因为开发效率要求的非常高,所以它的运行效率是非常低的,它的QPS、TPS或者并发是受限的,所以我们需要把很多应用服务组成一个集群向用户提供高可用性,但很多服务构成集群的时候,需要nginx具有反向代理功能,可以把动态请求传给应用服务。而很多应用服务组成集群会带来两个需求,一个需求是动态扩容,二是有些服务出问题时我们需要做容灾;这样我们的反向代理必须具备”负载均衡''功能,其次,在这样一个链路中nginx是处在企业内网的边缘节点,随着我们网络链路的增长,用户体验到的时延会增加,所以如果我们把一些在一段时间内看起来不变的动态内容缓存在nginx中,由nginx直接向用户访问,那么这样用户时延就会减少很多,z这样反向代理又会衍生出另外一个功能”缓存“,加速我们的访问
很多时候我们在访问像CSS、JAVASCRIPT、js文件,或者像一些小图片,那么这样的静态资源是没有必要由应用服务来访问的,它只需要通过本地文件系统放置的静态资源直接由nginx提供访问就行了,这就是nginx的静态资源功能