Nginx是由俄罗斯第二大访问网站公司于2004年开发的一款高效的web服务器和反向代理服务器开源软件。它相比于apache有占用资源少,并发量大,轻量级等优点。
工作模式: 单进程模式和多进程模式。
1:单进程模式,Nginx启动运行两个进程,一个以root身份运行,一个以指定用户身份运行。后一个进程处理用户的请求,并且是单线程的工作方式。
2:多进程模式,启动运行多个进程,一个以root身份运行,其他以指定用户身份运行,并且每个进程都有多个线程。
Nginx的模块分为三大类: Handlers模块 Filter模块和Proxy模块.Nginx内核模块非常轻量级,主要用来处理极简单的工作,内核将请求交给其他模块处理。Nignx所有的模块都静态编译,在启动时自动加载。而apache则是在配置文件中指定需要加载的模块,在处理相应的请求时再将对应的模块加载。
Nginx单线程仍然比apache多进程多线程处理请求快的原理:首先,apache处理请求时为一个线程对应一个请求,对应比为1:1,这样当请求量非常大时,基本上内存资源全部被占用,当客户端网络带宽受限时,服务器会非常的慢。而Nginx采用的是事件驱动模型,即将请求分为阻塞型请求和非阻塞型请求,主线程只处理非阻塞型请求。当遇到阻塞型请求时,使用epoll函数将该请求转移。这样做的好处是主线程可以一直处理响应快的请求,使服务器处理请求的速度大大提高。
Nginx可以用来做负载均衡。通过指令upstream{}在主配置文件中设置。负载均衡的后台服务器调度算法有:
轮询调度:即按分发请求的时间先后来对请求进行转发。
wigth权值调度:按照各个服务器设置的权值进行请求分发。
Ip_hash基于IP地址的hash函数调度:将每个Ip地址求hash函数值对应相应的服务器来对请求进行分发。
url_hash基于url地址的hash函数调度:将url求hash函数对应服务器对请求进行分发。
Nginx主配置文件的指令:
event{ } 主要设置工作模式
http{ } 对Nginx进行全局设置。
Server{} 对具体的服务器进行设置
location{} 对相应的url进行细粒度配置。
安装Nginx:
下载Pcre软件包,nginx软件包和Md5软件包。
解压pcre库和md5库. 解压nginx包 在configure配置时将解压的目录在配置参数中指定。
make && make install.