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是一个开源,运行servletJSP Web应用软件的基于JavaWeb应用软件,但是Tomcat对静态文件、高并发的的处理能力弱。在制造行业用的比较多,在互联网企业用的相对较少。
【4】 IBM WebSphere服务器:是一种功能完善、开放的web应用服务器,是IBM电子商务计划的核心部分,它是基于Java的应用环境,范围从简单至高级直至企业级,相对其他WEB服务器来说,应用数量较少。
【5】 Microsoft IISMicrosoftweb服务器产品为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占用率低。(为Apache1/5-1/10
【4】对后端服务有健康检查功能
【5】支持PHP cgiCGI:通用网关接口)方式和FastCGI方式

五、Nginx 工作原理

Nginx是由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也比较简单,通过查找配置文件将客户端请求映射到一个server模块中,server中配置的每个指令将会启动不同的模块去完成响应的工作。

Nginx的高并发得益于其采用了Epoll模型,与传统的服务器程序架构不同,Epolllinux内核2.6以后才出现的。 Nginx采用Epoll模型,异步非阻塞,而Apache采用的是Select模型。

以下作为扩展,了解即可:
【1】Select特点:Select选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,Select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。
【2】Epoll的特点:Epoll对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高

posted @ 2020-11-20 16:32  Java程序员进阶  阅读(5)  评论(0编辑  收藏  举报