一、 Nginx 基础

1、简介

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。 Nginx
是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发, 因它的稳定性、丰富的功能集、示例配置文件和
低系统资源的消耗而闻名。
Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like
协议下发行。特点是占有内存少, 并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好, 国
内使用 nginx 网站用户有:百度、 京东、 新浪、 网易、 腾讯、 淘宝等。

2、 功能

(1) web 服务(http)
(2)负载均衡(反向代理 proxy)
(3) web 缓存(web cache

3、 优点

(1)高并发(静态小文件)。静态并发 1-2 万
(2)占用资源少。 2 万并发,开 10 个线程服务,内存消耗才几百 M
(3)功能种类比较多(web、 cache、 proxy)。但每个功能都不是特别强
(4) 支持 epoll 模型,使得 nginx 可以支持高并发
(5) nginx 配合动态服务和 apache 有区别
(6)利用 nginx 可以对 IP 限速,也可以限制连接数
(7)配置简单、灵活

4、 LNMP 实现原理和架构(Linux Nginx MySQL PHP)

1) LAMP 实现:
用户请求-->Apache(:80) -->php 模块(libphp5.so) -->mysql
(2) LNMP 实现:
用户请求-->Nginx(:80) -->php 服务(FCGI :9000 ) -->mysql
当访问 php 页面时, Nginx 通过配置文件是指定的 php 解析器,用 fastcgi_passu 将请求以 http ip:9000
的形式抛给 FCGI 解析.

5、 Nginx 的应用场合

(1)静态服务器
主要是图片、视频等服务,文件后缀名主要是.html.jscssflv 等。另一个常用工具是 lighttpd(百度贴
吧在用)。并发一般是 1-3 万
(2)动态服务
主要是 nginx+FaseCGI的方式运行 phpjsp等程序。并发一般在 500-1500.主要的瓶颈是在 FaseCGMySQLFaseCGI 的并发一般在 500-1500, MySQL 的并发一般是 300-1500。 相当于 Apache+phplighttpd+FCGI php
(3)反向代理(负载均衡)
日 PV 在 2000 万以下的,都可以直接用 Nginx 做代理。竞争对手是 haproxy(软件)、 F5(硬件)、 A10(硬件)。
(4)缓存服务
相当于 SquidVarnish

6、 主流 WEB 服务产品对比

(1) Apache
a、 2.2 版本非常稳定强大,据官方说 2.4 版本性能超强。
bPrefork 模式取消了进程创建开销,性能很高。
c、 处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在于 Apache 本身。
d、 基于传统的 select 模型,高并发时消耗系统的资源相对多一些。
e、扩展库采用 DSO 方法。如通过 apxs 安装 php 模块
h、功能多、插件多、更稳定、更安全
(2) Nginx
a、 基于异步 IO 模型(epollkqueue),性能强,能支持上万并发。
b、 对于小文件支持很好,性能很高(限静态小文件 1M)。
c、 代码优美,扩展库必须编译进主程序。
d、 系统的资源比较低。