小洪維尼 发表于 2018-11-10 10:32:53

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]
查看完整版本: NGINX介绍及参数