很多朋友可能或多或少了解过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最重要的三种使用的场景 , 希望我的分享能帮助到你 。
- 东南亚|MIUI13深度使用报告,这还是我认识的MIUI吗?网友评价很真实
- 小米 11 Ultra 内测 NFC“读写勿扰”与“解锁后使用”功能
- 支付宝|新的支付方式兴起,已有超1.4亿人使用,微信支付宝地位不再?
- “最敬业”的手机代言人,厂商欠债173亿破产,他却仍在继续使用
- 联想|司马南没告诉你们,当年联想的使命根本不是研发,而是赚钱养计算所
- 锐龙|iOS15.2.1真的不好用吗?重度使用两天后,已升级用户都这样说
- 高度计|美国C波段5G部署争执最新进展:联邦航空局发指令限制使用高度计
- 金山这家企业获得英国驻华使馆的赞扬,还服务于全国1000多家医院……
- iOS|iOS15.2.1使用报告,年前不能错过的版本,网友的体验说明了一切
- iOS|iOS15.2.1不同机型使用体验,网友评价太真实,看完升级也不迟