大家好,这是一个关于Nginx的系列,将从零开始学习Nginx,希望能为你带来帮助。
image.pngNginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
一个网络请求从红色的箭头走下来,会先经过Nginx再到应用服务(比如:Tomcat、Django),然后再访问Redis或者MySQL这样的数据库提供基本的数据功能。
反向代理服务
由于应用服务要求开发效率高,所以运行效率相对较低,QPS、TPS或并发都是受限的。所以我们把很多这样的应用服务组成集群向用户提供高可用性。而一旦很多应用构成集群的时候,就需要Nginx具有反向代理功能,可以把动态请求传导给应用服务。很多应用服务构成集群一定会带来两个需求:第一是需要动态扩容,其次有些服务出问题需要容灾。这样反向代理必须具备负载均衡功能,其次在这样的链路中Nginx处在企业内网的边缘节点,随着网络链路的增长用户体验到的时延会增加,所以我们如果能把一些所有用户看起来不变的或者在一段时间内看起来不变的动态内容缓存在Nginx部分,由Nginx直接向用户提供访问那么这样的时延就会减少很多。所以反向代理会衍生出缓存功能,加速访问。
静态资源服务
很多时候像访问CSS、JS或图片等静态资源是没有必要由应用服务提供访问的。只要通过本地文件系统上放置资源,直接由Nginx提供访问就可以了。
API服务
由于应用服务本身的性能存在很多问题,但是数据库服务要比应用服务好得多因为它的业务场景比较简单,并发性能和TPS都要远高于应用服务。所以由Nginx直接访问数据库或者应用服务,利用其强大的并发性能实现(如:Web防火墙)这样复杂的业务功能来提供给用户。这要求API服务有非常强大的业务处理功能,所以如OpenResty或Nginx集成的JS、Lua脚本语言及相关工具库来提供完整的API功能。
网友评论