当前位置 知且行 linux 正文

nginx教程之初窥门径

nginx诞生记

牛人与普通人的区别在于:前者遇到不爽的事,二话不说,自己动手解决;普通人要么骂骂咧咧,要么置于不理,眼不见为净。当然,这并没有什么不好,这个世界就是需要普通人占据绝大多数,才能衬托出牛人的伟大。

伊戈尔·赛索耶夫就是一个牛人(战斗民族的名字,不是什么夫,就是什么斯基),当年他在rambler.ru这个号称战斗民族访问量第二大的网站工作时,为了提升网站的访问速度,就自己写了一个高性能的web服务器,从此,这个名为nginx的web服务器就成为万千程序员的利器。

在nginx的众多追捧者中,淘宝是其死忠粉,在此基础上开发了Tengine

nginx的特性

  • 模块化设计

模块化意味着有较好的扩展性

  • 高可靠

工作原理是:由master主进程负责解析配置文件以及生成worker子进程; worker进程有不同的种类,职责各有不相同,有些负责响应请求, 有些负责缓存等

  • 低内存消耗

一个线程可响应多个请求,据说10000个keep-alive(保持连接)下的connection, 仅需要2.5MB的内存。

虽然还不太明白,但看起来就觉得很厉害的样子

  • 支持热部署

能够在不停机的前提下更新配置文件、日志文件滚动、升级程序版本。可以类比为在空中给飞机进行加油

nginx基本功能

  • 静态资源的web服务器,能缓存打开的文件描述符

这是nginx最基本的功能

  • 作为http smtp pop3这三种协议的反向代理服务器

反向代理可以简单地类比为中间人。中间人可以有多个层级。如:你要买西兰花,不需要去菜地跟农民交易,只需要去市场找菜贩买菜,而菜贩可能是跟蔬菜批发商拿货的,批发商才是直接与菜农交易。

在这整个过程中,你是发起请求的客户端,菜农是最终提供服务的服务器,但你们并不需要见面,甚至不需要知道对方的存在,只需要与你们的上下游对接即可。中间商就是反向代理服务器,起到的是接收请求--转发请求--接收响应--发送响应的作用。

  • 支持缓存和负载均衡机制

nginx可以接受很多个请求,但请求的处理需要多台服务器

场景类比:1个服务员可以接待100个人,但厨师一人只能做20人的菜,那就需要加5个厨师。服务员就是反向代理器,厨师就是服务器,反向代理负责接收并分发请求,服务器提供数据,请求过大时只需要新增服务器即可

  • 支持FastCGI(fpm, lnmp),uWSGI(python)

  • 模块化、过滤器、ssi、图像的大小调整

  • 支持ssl,从而支持https服务

nginx扩展功能

  • 基于名称和IP的虚拟主机

  • 支持keepalive

  • 支持平滑升级

  • 定制访问日志, 支持使用日志缓冲区提供日志存储性能

  • 支持 url rewrite

  • 支持路径别名

  • 支持基于ip及用户的访问控制

  • 支持速率限制、支持并发数限制

转载必须注明出处:https://www.zhiqiexing.com/113.html

关于我

我希望能成为一个认真、有趣、创造更多价值的人
关注微信
微信扫一扫关注我

微信扫一扫关注我

返回顶部