雷神|Nginx使用于哪些场景

雷神|Nginx使用于哪些场景

很多朋友可能或多或少了解过Nginx , 即使你没有使用过Nginx , 但是你可能用Apache搭建过简单的Web服务器 , 或者你可能用其他写过一些动态页面 , 再或者用lvs搭建过Web服务集群 。 这些功能Nginx都可以实现 , 但Nginx最重要的三个使用场景我认为是这里列出来的静态资源服务、反向代理服务和API服务 。
?

那我现在通过上面这张图给大家详细讲解一下 。
那么这张图往往一个外部请求从红色的线走下来以后会先经过Nginx , 再到我们的应用服务提供基本的数据功能 。
那么这里有一个问题 , 我们的应用服务因为要求开发效率非常的高 , 所以它的运行效率是很低的 , 它的QPS、TPS或者并发都是受限的 , 所以我们需要把很多这样的应用服务组成一个集群 , 向用户提供高可用性 , 而一旦很多服务构成集群的时候我们需要Nginx具有反向代理功能 , 可以把动态请求传导给应用服务 。
【雷神|Nginx使用于哪些场景】而很多应用服务构成集群它一定会带来两个需求;
第一个需求我们需要动态的扩容;
第二个需求则是有些服务出问题的时候我们需要做容灾;
那么这样我们做反向代理必须具备负载均衡功能 , 其次在这样一个链路中 , Nginx是处在企业内网的一个边缘节点 , 随着我们的网络链路增长用户体验到的时延会增加 , 所以如果我们能把所有用户看起来不变的、或者在一段时间内看起来不变的动态内容缓存在Nginx部分 , 由Nginx直接向用户提供访问 。 那么这样用户的时间就会减少很多 , 所以反向代理会衍生出另外一个功能叫缓存 。 它能够加速我们的访问 。
而很多时候我们在访问像CSS或者Javascript、JS文件或者像一些小图片 , 那么这样的静态资源是没有必要由应用服务来访问的 , 它只需要通过本地文件系统上设置的静态资源直接由Nginx提供访问就可以了 , 这就是Nginx的静态资源功能 。
那么第三个应用场景则是则是因为应用服务它本身的性能因为有很多问题 , 但是数据库服务要比应用服务好得多 , 因为它的应用场景比较简单 , 它的并发性能和TPS都要远高应用服务 。 所以我们这里衍生出第三个应用场景 , 由Nginx直接去访问数据库或者应用服务 。
那么 , 利用Nginx强大的一个并发性能实现如Web防火墙这样复杂的一些业务功能来提供给用户 , 这要求我们的API服务有非常强大的业务处理功能 , 所以像Open Resty或者像Nginx集成了Javascript , 利用Javascript这样的语言功能和它们语言先天自带的一些工具库来提供完整的API服务 。
以上就是介绍我个人认为Nginx最重要的三种使用的场景 , 希望我的分享能帮助到你 。