NGINX的简介和工作原理

NGINX是由俄罗斯开发的一个高性能HTTP,反向代理服务器。他以高并发以及处理静态文件的功能很强大,占有内存很少的特点,深受国内外互联网公司的青睐。NGINX web服务器主要是由各中模块协同工作的,模块从结构上一般分为三种,核心模块,基础模块和第三方模块。从功能上分为handlers(处理器模块),filter(过滤器模块),proxies(代理类模块)。nginx的内核很小,完成工作也简单,通过查询配置文件将客户端的请求映射到location指令中。 NGINX的高并发是采用了异步非阻塞的方式,对于事件不是遍历的而是事件响应,因此效率非常高。 NGINX默认端口为80,并且启动一个master进程,然后由master生成很多的worker进程,客户端请求会连接worker进程,为了保证一个HTTP请求由一个worker处理,一个连接请求过来,每个进程都有可能处理这个连接.worker进程是从master进程fork出来的,在master进程里,先建立好需要listen的socket(listenfd)后,然后再fork出多个worker进程.所有worker进程的listenfd会在新连接来时变得可读,为了保证只有一个进程处理该连接,所有worker进程在注册listenfd读事件前抢accept_mutex,抢到互斥锁的那个进程注册listenfd读事件,在读事件里调用accept接受该连接.当一个worker进程在accept这个连接之后,开始读取请求,解析请求,产生数据后,再返回客户端,最后才断开连接,这就是一个完整的请求处理.一个请求,完全由worker处理,且只在一个worker里处理。

NGINX的安装配置

首先你需要安装一些依赖库

yum install gcc pcre pcre-devel openssl openssl-devel -y

这里使用源码编译方式安装

cd /usr/src
wget http://nginx.org/download/nginx-1.4.7.tar.gz

解压源码包

tar -xvf nginx-1.4.7.tar.gz
cd nginx-1.4.7.tar.gz

安装nginx

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
&&make
&&make install

到此安装完成,如果需要验证nginx是否安装正确

/usr/local/nginx/sbin/nginx -t

如果出现以下返回OK既正确 启动nginx

/usr/local/nginx/sbin/nginx

查看进程的状态 可以看到nginx由一个master进程和一个worker进程组成 到此为止nginx安装完成。