NGINX介绍及参数
基本功能:静态资源的web服务器,能缓存打开的文件描述符
可以做反向代理服务器,缓存,负载均衡
支持FastCGI
静态模块化机制,非DSO机制,支持多种过滤器,如gzip,SSI和图像大小调整等
支持SSL
扩展功能:
支持基于名称和IP做虚拟主机
支持keepalive
支持平滑的升级,平滑的配置文件更新
支持定制访问日志,支持日志缓存以提高性能
支持url rewrite
支持路径别名
支持基于IP和用户认证
支持速率限制,并发限制
Nginx的基本架构
Nginx会启动一个master进程和多个worker线程/进程,每个worker进程可以响应多个请求,启动的worker数量可以自行设置,一般而言,设置的worker数量应该比cpu的核心数少一到两个,如24个核心的cpu,应该设置22-23个worker进程数,Nginx是基于事件驱动:kqueue,epoll(Linux),/dev/poll,也支持消息通知机制:select,poll,rt signals;支持sendfile:服务器响应请求时,由内核直接响应,而不用经过用户空间.支持文件AIO,异步IO,支持mmap,内存映射.
Nginx的模块,这里只介绍http模块
Nginx是高度模块化的程序,其中包含Nginx的核心模块(编译时默认都安装),http的标准模块以及http的可选模块
Nginx的核心模块配置内别
核心段
1: #usernobody; #以哪个用户的身份运行worker进程,
2: worker_processes1; #启动的worker的数量,性能优化关键点
3:
4: #error_loglogs/error.log; #错误日志文件及其级别;默认为error级别;调试时可以使用debug级别,但要求在编译时必须使用--with-debug启用debug功能;
5: #error_loglogs/error.lognotice;#同上,但是级别为notice
6: #error_loglogs/error.loginfo; #同上,但是级别为 info
7:
8: #pid logs/nginx.pid; #指定Nginx的pid文件
9:
10:
11: events { #
12: worker_connections1024; #worker进程的个数;通常其数值应该为CPU的物理核心数减1或减2;Nginx的最大并发数为worker_processes*worker_connections
13: }
14: ----------------------以下都是默认不存在的配置-------------------------
15: -------性能优化相关-------
16:
17: worker_rlimit_nofile 9999; #指定一个worker进程所能够打开的最大文件句柄数,可以使用ulimit -n查看单个文件可以打开的最大句柄数,(socket连接也算在里面)。系统默认值1024,此值需大于等于worker_connections,但是如果是代理服务器,此值应大于等于worker_connections的两倍
18: worker_rlimit_sigpending12; #设定每个用户能够发往worker进程的信号的数量
19: worker_cpu_affinity cpumask; #与上面的worker_processes有关,让worker运行在指定的cpu上,如有4颗cpu,4个process,那就分别是0001,0010,0100,1000,表示第0,1,2,3颗cpu,性能优化关键点
20: ssl_engine ssldevice; #在存在ssl硬件加速器的服务器上,指定所使用的ssl硬件加速设备;
21: timer_resolution t; #每次内核事件调用返回时,都会使用gettimeofday()来更新nginx缓存时钟;timer_resolution用于定义每隔多久才会由gettimeofday()更新一次缓存时钟;x86-64系统上,gettimeofday()代价已经很小,可以忽略此配置;
22: worker_priority number; #worker的优先级,值越小,优先级越高,对于性能的增强也是很关键的(-20,20),默认是0,对系统的性能增强很关键
23: -------事件相关-----------
24: 需要定义在 events { } 里面
25: accept_mutex ; #是否打开Ningx的负载均衡锁;此锁能够让多个worker进轮流地、序列化地与新的客户端建立连接;而通常当一个worker进程的负载达到其上限的7/8,master就尽可能不再将请求调度此worker;默认为on
26: lock_file /path/to/lock_file; #这是accept_mutex的锁文件,如果accept_mutex为off,这项就没用了
27: accept_mutex_delay #ms; #在accept锁模式中,一个worker进程为取得accept锁的等待时长;如果某worker进程在某次试图取得锁时失败了,至少要等待#ms才能再一次请求锁;默认是500毫秒
28: multi_accept on|off; #是否允许worker一次性地响应多个用户请求;默认为Off,一个连接一个连接的建立;
29: use ; #定义使用的事件模型,建议让nginx自动选择;在Linux中一般(默认)都选择epoll
30: ------用于调试、定位问题--
31: 只在调试时使用
32: daemon on|off; #是否让ningx运行后台;默认为on,调试时可以设置为off,使得所有信息去接输出控制台;
33: master_process on|off; #是否以master/worker模式运行nginx;默认为on;调试时可设置off以方便追踪;
页:
[1]