Nginx
Nginx(wngine X)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器
Nginx的程序架构:
master/worker
一个master进程:
负载加载和分析配置文件、管理worker进程、平滑升级
一个或多个worker进程
处理并响应用户请求
特性:异步、事件驱动和非阻塞
并发请求处理:通过epoll/select
文件IO:高级IO sendfile,异步,mmap
nginx的三大功能:
http {}:web服务器(类似于httpd,静态)、http reverse proxy(类似于httpd,动态)
mail {}:反代IMAP4/POP3/SMTP
stream{}: TCP/UDP reverse proxy 伪四层调度
nginx模块:高度模块化,但其模块早期不支持DSO机制;近期版本支持动态装载和卸载;
模块分类:
核心模块:core module
标准模块:
HTTP modules:
Standard HTTP modules
Optional HTTP modules
Mail modules
Stream modules:传输层代理
程序环境:
配置文件的组成部分:
主配置文件:nginx.conf
include conf.d/*.conf
fastcgi, uwsgi,scgi等协议相关的配置文件
mime.types:支持的mime类型
主程序文件:/usr/sbin/nginx
Unit File:nginx.service
配置:
主配置文件的配置指令:
directive value [value2 ...];
注意:
(1) 指令必须以分号结尾;
(2) 支持使用配置变量;
内建变量:由Nginx模块引入,可直接引用;
自定义变量:由用户使用set命令定义;
set variable_name value;
引用变量:$variable_name
主配置文件结构:
main block:主配置段,也即全局配置段;
event {
...
}:事件驱动相关的配置;
http {
...
}:http/https 协议相关的配置段;
mail {
...
}
stream {
...
}
http协议相关的配置结构
http {
...
...:各server的公共配置
server {
...
}:每个server用于定义一个虚拟主机;
server {
...
listen
server_name
root
alias
location [OPERATOR] URL {
...
if CONDITION {
...
}
}
}
}
配置指令:
main配置段常见的配置指令:
分类:
正常运行必备的配置
优化性能相关的配置
用于调试及定位问题相关的配置
事件驱动相关的配置
正常运行必备的配置:
1、user
Syntax: user user [group];
Default: user nobody nobody;
Context: main
Defines user and group credentials used by worker processes. If group is omitted, a group whose name equals that of user is used.
2、pid /PATH/TO/PID_FILE;
指定存储nginx主进程进程号码的文件路径;
3、include file | mask;
指明包含进来的其它配置文件片断;
4、load_module file; 新版nginx才支持
指明要装载的动态模块;
性能优化相关的配置:
1、worker_processes number | auto;
worker进程的数量;通常应该等于小于当前主机的cpu的物理核心数;
auto:当前主机物理CPU核心数;
2、worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
nginx进程的CPU亲缘性,限制绑定一个进程只运行在一个CPU上,绑了之后若是没做隔离这个CPU还可以运行其他的进程,但是此nginx进程只能运行在这一CPU;
CPU MASK:位图掩码
00000000:
0000 0001:0号CPU
0000 0010:1号CPU
0000 0100:2号CPU
... ...
0000 0011:0和1号CPU;
3、worker_priority number;
指定worker进程的nice值,设定worker进程优先级;[-20,20]数字越小,优先级越高
4、worker_rlimit_nofile number;
worker进程所能够打开的文件数量上限;
调试、定位问题:
1、daemon on|off;
是否以守护进程方式运行Nignx;centos6为on,使用脚本upstart启动服务进程,要求进程以守护进程运行,否则将占据终端,终端一关闭进程也终止,centos7为off,服务的启动和终止靠systemed来管理,要求进程运行在前台,否则systemed无法管理
2、master_process on|off;
是否以master/worker模型运行nginx;默认为on;
若为off表示至运行一个进程,即接受请求又处理请求,单进程结构
3、error_log file [level];
事件驱动相关的配置:
events {
...
}
1、worker_connections number;
每个worker进程所能够打开的最大并发连接数数量;
worker_processes * worker_connections
2、use method;
指明并发连接请求的处理方法,默认为epoll(事件驱动);
use epoll;
3、accept_mutex on | off;
处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程;
网友评论