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 个厨师. 服务员就是反向代理器, 厨师就是服务器, 反向代理负责接收并分发请求, 服务器提供数据, 请求过大时只需要新增服务器即可
image
支持 FastCGI(fpm, lnmp),uWSGI(python)
模块化, 过滤器, ssi, 图像的大小调整
支持 ssl, 从而支持 https 服务
nginx 扩展功能
基于名称和 IP 的虚拟主机
支持 keepalive
支持平滑升级
定制访问日志, 支持使用日志缓冲区提供日志存储性能
支持 url rewrite
支持路径别名
支持基于 ip 及用户的访问控制
支持速率限制, 支持并发数限制
来源: http://www.jianshu.com/p/d39979cc260d