一、nginx简介
1、特点:
(1)nginx服务器既可以作为HTTP服务器,也可以作为反向代理服务器,还可以作为邮件服务器;
(2)能够快速响应静态页面的请求;
(3) 支持 FastCGI、SSl、VirtualHost、URLRewirte、HTTP Basic Auth 、Gzip等大量使用功能;并且支持共多的第三方功能模块的扩展
2、nginx三类基础功能介绍
(1)作为HTTP服务器
A、处理静态文件(如HTML静态网页);处理索引文件以及支持自动索引
B、支持HTTP下的安全套接层协议SSL
C、支持基于IP和servername的虚拟主机设置
D、支持重新加载配置以及在线升级时,不用中断正在处理的请求
E、提供3XX-5XX错误代码的重定向功能
F、提供远程FastCGI服务
G、支持高并发链接
、、、众多功能
(2)反向代理服务器
反向代理是nginx服务器作为web服务器的主要功能之一
在提供反向代理服务方面,nginx服务器转发前端请求性能稳定,并且后端转发与业务配置相互分离,配置相当灵活
它还可以做到负载均衡,解决网络负载,提高web服务性能。
(3)支持邮件代理服务
支持IMAP和POP3认证
3、Nginx的程序架构:
master/worker
一个master进程:负载加载和分析配置文件、管理worker进程、平滑升级
一个或多个worker进程:处理并响应用户请求
缓存相关的进程:
cache loader:载入缓存对象
cache manager:管理缓存对象
二、全局配置段常见的配置指令:
分类:
正常运行必备的配置
优化性能相关的配置
用于调试及定位问题相关的配置
事件驱动相关的配置
1、正常运行必备的配置:
打开Nginx朱配置文件/etc/nginx/nginx.conf看到全局配置段
(1)user user [group];
定义用户和组工作进程使用的凭证。如果省略组,那么所属组为用户基本组。
(2)pid /PATH/TO/PID_FILE;
指定存储nginx主进程进程号码的文件路径;
(3)include file | mask;
指明包含进来的其它配置文件片断;
(4)load_module file;(1.10版本以后的可以使用DSO机制)
指明要装载的动态模块;
查看已存在的模块
2、性能优化相关的配置:
(1)worker_processes number | auto;
worker进程的数量;通常应该等于小于当前主机的cpu的物理核心数;
auto:根据当前主机物理CPU核心数,自动设置work_proceeses数量
(2)worker_cpu_affinity auto [cpumask];
将每一个work_processes进程绑定在一个CPU上
注意:如果不绑定即不启用此项功能,那么worker进程在那个CPU上运行,不确定的,有可能造成在同一个运行服务时间内一个CPU上运行多个worker进程,而有的CPU上运行一个worker进程
(3)worker_priority number;
指定worker进程的nice值,设定worker进程优先级;[-20,20]
(4)worker_rlimit_nofile number;
worker进程所能够打开的文件数量上限(默认为1024);
一个worker进程可以1024个并发,它就可以打开1024个套接字文件(不包括其 它文件),
(5)worker_connections number;
单个worker进程所能处理的最大请求数量
实验一:
手动指定worker进程数量和手动绑定CPU
指定worker进程优先级为-8
指定worer进程最大能打开的文件数量6000个(注意:此值要大于等于worker进程量和单个worker进程所能处理的请求数量的乘积)
语法检查和重载配置文件
查看nginx的worker进程及所绑定的cpu和nice值
可以看到一共4个worker进程,nice值为-8 分别绑定在4个CPU上
实验二:
自动获取worker进程数量和自动绑定CPU
语法检查和重载配置文件
查看nginx的worker进程及所绑定的cpu
对比实验一,可以看到功能生效情况一致,只不过worker进程的绑定位置改变
3、调试、定位问题:
(1)daemon on|off;
是否以守护进程方式运行Nignx;
(2)master_process on|off;(主要用于开发测试)
是否以master/worker模型运行nginx;默认为on;
(3)error_log file [level];(它不是用rsyslog管理的。是自己本身的功能进行自我管理)
4、事件驱动相关的配置:
events {
…
}
(1)worker_connections number;
每个worker进程所能够打开的最大并发连接数数量;
(2)use method;
指明并发连接请求的处理方法;(有两种epoll和select(它限定1024))
use epoll;
(3)accept_mutex on | off;
处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程;
基本的全局配置如下图:
原创文章,作者:zq,如若转载,请注明出处:http://www.178linux.com/78194