Nginx 安装及原理
优质博文:IT-BLOG-CN
一、目前常见的Web服务器
【1】 Apache(http://httpd.apache.otg)
:仍是世界上用的最多的web
服务器,市场占有率60%
左右,模块非常丰富,系统非常稳点,可移植性好,但比较消耗内存。并发能力比较差。最多支持到3
千到5
千。
【2】 Lighttpd(http://www.lighttpd.net)
:是德国人写的一个开源软件,目前是提供一个高性能的网站,具有内存消耗低,CPU
占用率低,效能好以及模块丰富,Nginx
的重要竞争对手之一。
【3】 Tomcat服务器(http://tomcat.apache.org)
:Tomcat
是一个开源,运行servlet
和JSP Web
应用软件的基于Java
的Web
应用软件,但是Tomcat
对静态文件、高并发的的处理能力弱。在制造行业用的比较多,在互联网企业用的相对较少。
【4】 IBM WebSphere
服务器:是一种功能完善、开放的web应用服务器,是IBM电子商务计划的核心部分,它是基于Java
的应用环境,范围从简单至高级直至企业级,相对其他WEB
服务器来说,应用数量较少。
【5】 Microsoft IIS
:Microsoft
的web
服务器产品为Internet Information Server(IIS)
,IIS
提供了一个图形界面管理工具,IIS
是一种Web
服务组件,其中包括Web
服务器,FTP
服务器、NNTP
服务器(新闻服务)、SMTP
服务器。
Nginx
是一个高性能的HTTP
和反向代理服务器,也是一个IMAP/POP3/SMTP
服务器。其特点是占用内存少,并发能力强。如果使用Nginx
作为web
服务器,那么Nginx
收到请求后将请求内容响应到客户端。如果使用Nginx
作为代理服务器,那么Nginx
收到请求后将请求转发到应用服务器(如Tomcat
),应用服务器处理完请求后将请求发送给Nginx
,然后Nginx
再将响应内容发送给客户端。
Nginx
是多进程架构,有一个主进程和若干个工作进程。主进程主要用来读取并检测配置文件,管理工作进程。工作进程用来处理客户端请求。Nginx
采用基于事件的模型和独立于操作系统的机制来高效地将请求分发到工作进程。官方网站:www.nginx.org
二、安装Nginx
Linux
环境:
【1】Nginx
依赖pcre
库,如果缺少则进行安装:yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
【2】wget http://nginx.org/download/nginx-1.10.3.tar.gz
或者将压缩包导入到该目录。
【3】解压文件:tar zxvf nginx-1.10.3.tar.gz -C /usr/install
【4】进入解压后的nginx-1.10.3
目录,输入:./configure --prefix=/usr/install/nginx
配置安装的路径。
【5】继续在该目录通过:make && make install
进行编译安装,因为Nginx
是通过C
编写的。
【6】启动时需要进入安装目录:cd /usr/local/nginx
执行:./sbin/nginx
注意:当出现如下情况时,执行:yum -y install openssl openssl-devel
make: *** No rule to make target 'build', needed by 'default'。 停止。
三、安装测试
修改安装目录下的/conf/nginx.conf
配置文件:主要修改域名server_name
为自己虚拟机的IP
,并修改端口号,防止与Tomcat
端口冲突,我这修改为8089
。修改完后进入/sbin/nginx
目录下执行:nginx -t
检查配置文件是否有错,返回success
则说明没问题。然后对Nginx
服务进行重启:./sbin/nginx -s reload
并关闭防火墙:service iptables stop
http{//主要 配置http服务器
server{//虚拟主机端
Listen 8089;//监听的端口
server_name 192.168.88.130;//域名
Location / {//定位,把特殊的路径或文件再次定位
root 文件夹//根目录
index 页面//如果没有访问指定目录,则访问此页面。
}
}
}
输入测试地址:
三、默认配置文件
nginx.conf
解读
#全局区
#表示只有一个子进程(工作进程),可进行修改,一般设置为CPU数*核数。负载均衡模块会使用到。
worker_processes 1;
#一般配置 nginx 连接的特性
events {
#指一个工作进程(work)最大允许产生1024个连接。
worker_connections 1024;
}
#这是配置 http 服务器的主要段
http {
#定义MIME-Type
include mime.types;
default_type application/octet-stream;
#配置允许使用sendfile方式传输
sendfile on;
#配置连接超时时间
keepalive_timeout 65;
#配置虚拟主机端,使得Nginx服务器可以在同一台服务器上至运行一组Nginx进程,就可以运行多个网站。
server {
#监听端口
listen 8089;
#域名可以有多个,用空格隔开
server_name 192.168.88.130;
#配置处理/server1/location1 请求的location
location / {
root html;
index index.html index.htm;
}
}
四、Nginx对比Apache的优势
【1】高并发响应性能非常好,官方Nginx
处理静态文件并发5w/s
【2】反向代理性能非常强。(可用于负载均衡)
【3】内存和cpu
占用率低。(为Apache
的1/5-1/10
)
【4】对后端服务有健康检查功能
【5】支持PHP cgi
(CGI
:通用网关接口)方式和FastCGI
方式
五、Nginx 工作原理
Nginx
是由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也比较简单,通过查找配置文件将客户端请求映射到一个server
模块中,server
中配置的每个指令将会启动不同的模块去完成响应的工作。
Nginx
的高并发得益于其采用了Epoll
模型,与传统的服务器程序架构不同,Epoll
是linux
内核2.6
以后才出现的。 Nginx
采用Epoll
模型,异步非阻塞,而Apache
采用的是Select
模型。
以下作为扩展,了解即可:
【1】Select
特点:Select
选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,Select
需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。
【2】Epoll
的特点:Epoll
对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高