Nginx
Nginx(engine x)是一个高性能的代理服务器,主要作为HTTP server,HTTP reverse proxy server,mail proxy server,TCP/UDP proxy server。
主要工作在OSI的七层模型,也可以提供伪四层的负载均衡。
Nginx 是一个很强大的高性能Web和反向代理服务器,在连接高并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达 50,000 个并发连接数的响应。
三大核心功能:
http
-- web服务器
-- HTTP reverse proxy servermail
--mail proxy serverstream
--TCP/UDP proxy server(伪四层代理,类似于LVS)
Nginx中联系最多的就是http协议
HTTP术语
URL:资源统一定位符
shceme://[username[:password@]]host:port/path;params?uid=1#tr
http事务:request <--> response
headers:
- 通用头部(General Headers)
- 请求头部(Response Headers)
- 回应头部(Request Headers)
request:
<method> <URL> <VERSION>
HEADERS
<body>
response:
<VERSION> <STATUS> <REASON-PHRASE>
HEADERS
<body>
name: value
Method:GET/HEAD/POST, PUT/DELETE, TRACE, OPTIONS
Status Code:
- 1xx:
- 2xx:成功类响应码,200
- 3xx:重定向类的响应码,301, 302, 304
- 4xx:客户端错误,403,404
- 5xx:服务器端错误,502
认证:
- 基于ip认证
- 基于用户认证 :basic/digest
httpd MPM:
prefork:进程模型,两级结构,主进程master负责生成子进程,每个子进程负责响应一个请求;
worker:线程模型,三级结构,主进程master负责生成子进程,每个子进程负责生成多个线程,每个线程响应一个请求;
event:主进程master负责生成子进程,每个子进程响应多个请求
Nginx的程序架构:
master/worker
一个master进程:负载加载和分析配置文件、管理worker进程、平滑升级
一个或多个worker进程:处理并响应用户请求
缓存相关的进程:
- cache loader:载入缓存对象
- cache manager:管理缓存对象
特性:
异步、事件驱动和非阻塞
并发请求处理:通过epoll/select
文件IO:高级IO sendfile,异步,mmap
nginx模块
高度模块化,但其模块早期不支持DSO机制;近期版本支持动态装载和卸载;
模块分类:
- 核心模块:core module
- 标准模块:
-- HTTP modules:
Standard HTTP modules
Optional HTTP modules
-- Mail modules
-- Stream modules:传输层代理 - 3rd party modules
nginx的功用
静态的web资源服务器;(图片服务器,或js/css/html/txt等静态资源服务器)
结合FastCGI/uwSGI/SCGI等协议反代动态资源请求;
http/https协议的反向代理;
imap4/pop3协议的反向代理;
tcp/udp协议的请求转发;