nginx服务器介绍
1、nginx服务器功能
nginx服务器可以扮演:轻量级的web服务器、应用服务器、代理服务器、反向代理服务器、后台服务器、CDN缓存服务器
nginx的基本模块:
- 内核模块CoreModule:用于控制nginx服务器的基本功能,该模块的指令置于配置文件的根部(开始部分),内核模块还提供了大量的内置变量:$url、$host...。
- 事件驱动模块EventsModule:用于控制nginx如何处理连接,该模块的指令参数会对应用程序的性能产生重要影响,置于events{}中。
- http内核模块HttpCoreModule:提供http相关功能,该模块不能被禁用,指令置于http{}中。
2、nginx的模块与进程管理
nginx采用模块化设计,但和apache不同的是,模块一旦被编译进来就不可以被卸载,如果有特别需要只能重新编译nginx。
了解nginx默认安装和不安装的模块:./configure --help
使用第三方模块:在对nginx进行configure的时候,参数--add-module用来添加第三方模块。
nginx分为single和master两种进程模型,由于single的r容错能力较差,实际生产环境中使用的是master进程模型(master进程和worker进程)
master进程可以处理的信号:
worker进程可以处理的信号:
与apache服务器相比:
nginx采用的是事件驱动结构,使用异步套接字来接收请求,是一种非阻塞结构,不使用单独的线程处理,目的是为了减少内存和cpu的开销,而apache采用的同步套接字、线程和进程,每一个请求都是一个单独的进程或线程。
nginx服务器安装
安装文件下载地址:http://nginx.org/download/
1、安装(以CentOS系统为例)
1)yum安装:
yum -y install gcc gcc-c++ autoconf automake --安装nginx服务器所需的相关依赖包
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
yun -y install nignx
2)编译安装:
下载源码包,执行:
tar zxvf nginx-0.x.xx.tar.gz
cd nginx-0.x.xx
./configure
make
make install
2、nginx的启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
3、nginx的停止
ps -ef | grep nginx --查找nginx的主进程号
kill -QUIT nginx主进程号 或 kill -QUIT ‘/usr/local/nginx/logs/nginx.pid` --从容停止nginx
kill -TERM nginx主进程号 或 kill -INT nginx主进程号 --快速停止nginx
pkill -9 nginx --强制停止所有nginx进程
4、检查配置文件
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf --检查配置文件是否正确
5、重启nginx
kill -HUP nginx主进程号 或 kill -HUP ‘/usr/local/nginx/logs/nginx.pid` --平滑重启nginx
6、nginx支持的几种信号:
- TERM、INT 快速关闭
- QUIT 从容关闭
- HUP 平滑重启,重新加载配置文件
- USER1 重新打开日志文件
- USER2 平滑升级可执行程序
- WINCH 从容关闭工作进程
7、其他nginx命令:
Nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。(quick exit)
Nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。(graceful exit)
Nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。(changing configuration,start a new worker,quitting an old worker gracefully.)
Nginx -s reopen 重新打开日志文件。(reopenging log files)
nginx使用最新的epoll和kqueue网络IO模型,在实际生产环境中可支2~4W并发连接数。而apache采用的是select网络IO模型,在处理大量连接读写时比较低效。