美文网首页
day44 Nginx Web服务应用

day44 Nginx Web服务应用

作者: 藏鋒1013 | 来源:发表于2019-04-30 17:49 被阅读0次

    一、Nginx介绍

    1.什么是Nginx

    Nginx是一个开源的,支持高性能,高并发的WWW服务和代理服务软件。是由俄罗斯人Igor Sysove开发的。

    Nginx因具有高并发(特别是静态资源)、占用资源少等特性,且功能丰富而逐渐流行起来。

    在功能应用方面,Nginx不但是一个优秀的Web服务软件,还具有反向代理负载均衡功能和缓存服务功能。在反向代理负载均衡功能方面,它类似于大名鼎鼎的LVS负载均衡及Haproxy等专业代理软件,但是Nginx部署起来更为简单、方便;在缓存服务功能方面,它又类似于Squid等专业的缓存服务软件。

    2.Nginx三大主要功能

    3.Nginx特性

    □可针对静态资源高速高并发访问级缓存。
    □可使用反向代理加速,并且可进行数据缓存。
    □具有简单负载均衡、节点健康检查和容错功能。
    □支持远程FastCGI服务的缓存加速。
    □支持FastCGI、Uwsgi、SCGI、Memcached Server的加速和缓存。
    □支持SSL、TLS、SNI。
    □具有模块化的架构:过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI及图像缩放等功能。在SSI过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可悲并行处理。

    企业面试时需要解答如下Nginx HTTP服务器特色及优点:

    (1)支持高并发:能支持几万并发连接(特别是静态小文件业务环境)。
    (2)资源消耗少:在三万并发连接下,开启10个Nginx线程消耗的内存不到200MB。
    (3)可以做HTTP反向代理即加速缓存,即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。
    (4)具备squid等专业缓存软件等的缓存功能。
    (5)支持异步网络I/O事件模型epoll。

    4.Nginx主要应用场景

    (1)静态Web服务器

    使用Nginx运行HTML、JS、CSS、小图片等及静态数据(此类功能类似Lighttpd软件)

    Nginx是一个支持高性能、高并发的Web服务软件,它具有很多优秀的特性,作为Web服务器,与Apache相比,Nginx能够支持更多的并发连接访问,但占用的资源却更少,效率更高,在功能上也强大了很。

    (2)配合运行动态Web服务器

    Nginx结合FastCGI运行PHP等动态程序(例如使用fastcgi_pass方式)。
    Nginx结合tomcat/resin等支持Java动态程序(常用proxy_pass方式)。
    Nginx结合Lomcal/resin等支持Java动态程序(常用proxy_pass方式)。

    (3)反向代理/负载均衡

    在反向代理和均在均衡服务方面,Nginx可以作为Web服务、PHP等动态服务及Memcached缓存的代理服务器。

    (4)做Web服务缓存区

    在Web服务缓存服务方面,Nginx可通过自身的proxy_cache模块实现类squid等专业缓存软件的功能。

    二、Nginx Web服务

    1.Nginx作为Web服务器的主要应用场景包括:

    使用Nginx运行HTML、JS、CSS、小图片等及静态数据(此类功能类似Lighttpd软件)
    Nginx结合FastCGI运行PHP等动态程序(例如使用fastcgi_pass方式)。
    Nginx结合tomcat/resin等支持Java动态程序(常用proxy_pass方式)。

    u5.反向代理与负载均衡

    代理:海外代购、微商:代理,替别人做事
    正向代理:由内向外。代替 效率低。
         代替局域网内PC,请求外部应用服务。
    反向代理:由外向内 代替 效率低
         代替外部的用户请求内部的应用服务器。
    负载均衡;转发、效率高

    2.为什么Nginx总体性能比Apache高

    Nginx使用最新的epoll(Linux2.6内核)和kqueue(freebsd)异步网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached软件都采用的是epoll模型。
      Apache则使用的是传统的select模型,Nginx使用高并发的epoll模型

    比喻:

    select模型:伙伴去宿舍找你,一个一个找。。效率低。
    epoll模型: 伙伴去宿舍找你,先问宿管大妈,看看在哪间宿舍,然后直奔具体宿舍。效率高。

    select模型:小孩撒尿:如果尿尿拉出来,带着尿尿。
    epoll模型: 小孩撒尿:事先告诉所有小孩,如果要尿尿,你就站出来。阿姨就看有没有人站出来就可以了。

    3.软件安装

    Linux系统如何安装软件?

    1.rpm安装

    简单、快。
    依赖多,解决依赖困难繁琐。

    2.yum安装

    简单、快。
    自动解决依赖。
    不能选择软件版本或软件存放路径。

    3.编译安装(源码编译)

    慢、复杂,需要GCC编译器。
    可以自动以安装(版本、软件路径)。

    4.将源码制作成RPM,然后放到yum仓库,实现yum自动安装。

    一次性慢。
    复杂、安装快。
    可以自定义安装(版本、软件路径)。

    5.二进制安装

    4.Nginx安装

    两种安装方法:

    1.yum安装:
        epel源:版本低
        nginx官方源:版本高
    2.编译安装

    1、配置官方源yum安装

    [root@web01~]# yum install nginx -y  ##=====>下载安装nginx
    [root@web01~]# vim /etc/yum.repos.d/nginx.repo    ##=====>建一个目录,输入以下内容
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    [root@web01~]# rpm -qa nginx  ##=====>查看是否安装成功
    nginx-1.16.0-1.el7.ngx.x86_64
    [root@web01~]# systemctl start nginx  ##=====>开启nginx服务
    [root@web01~]# systemctl enable nginx  ##=====>设置为开机自启
    [root@web01~]# systemctl status nginx  ##=====>查看一下状态
    [root@web01~]# netstat -lntup|grep nginx  ##=====>查看nginx进程
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8063/nginx: master  
    

    2.编译安装

    [root@web02~]# mkdir -p /server/tools ##=====>创建一个目录
    [root@web02~]# cd /server/tools  ##=====>进去
    [root@web02/server/tools]# wget http://nginx.org/download/nginx-1.16.0.tar.gz  ##=====>下载压缩包
    [root@web02/server/tools]# yum install pcre pcre-devel -y
    [root@web02/server/tools]# yum install openssl openssl-devel -y    ##=====>安装依赖包
    [root@web02/server/tools]# ll  ##=====>查看是否存在
    total 1012
    -rw-r--r-- 1 root root 1032345 Apr 23 21:58 nginx-1.16.0.tar.gz
    [root@web02/server/tools]# tar xf nginx-1.16.0.tar.gz   ##=====>解压压缩包
    [root@web02/server/tools]# ll  ##=====>查看解压文件
    total 1012
    drwxr-xr-x 8 oldboy1 oldboy1     158 Apr 23 21:13 nginx-1.16.0
    -rw-r--r-- 1 root    root    1032345 Apr 23 21:58 nginx-1.16.0.tar.gz
    [root@web02/server/tools]# cd nginx-1.16.0/ ##=====>移动进nginx-1.16.0
    [root@web02/server/tools/nginx-1.16.0]# ll  ##=====>查看目录
    total 748
    drwxr-xr-x 6 oldboy1 oldboy1    326 Apr 30 17:17 auto
    -rw-r--r-- 1 oldboy1 oldboy1 296223 Apr 23 21:13 CHANGES
    -rw-r--r-- 1 oldboy1 oldboy1 451813 Apr 23 21:13 CHANGES.ru
    drwxr-xr-x 2 oldboy1 oldboy1    168 Apr 30 17:17 conf
    -rwxr-xr-x 1 oldboy1 oldboy1   2502 Apr 23 21:12 configure
    drwxr-xr-x 4 oldboy1 oldboy1     72 Apr 30 17:17 contrib
    drwxr-xr-x 2 oldboy1 oldboy1     40 Apr 30 17:17 html
    -rw-r--r-- 1 oldboy1 oldboy1   1397 Apr 23 21:12 LICENSE
    drwxr-xr-x 2 oldboy1 oldboy1     21 Apr 30 17:17 man
    -rw-r--r-- 1 oldboy1 oldboy1     49 Apr 23 21:12 README
    drwxr-xr-x 9 oldboy1 oldboy1     91 Apr 30 17:17 src
    [root@web02/server/tools/nginx-1.16.0]# useradd -s /sbin/nologin www -M  ##=====>创建一个用户www
    [root@web02/server/tools/nginx-1.16.0]# id www  ##=====>查看用户是否创建成功
    uid=1016(www) gid=1016(www) groups=1016(www)
    [root@web02/server/tools/nginx-1.16.0]# ./configure  --user=www --group=www --prefix=/application/nginx-1.16.0/ --with-http_stub_status_module  --with-http_ssl_module --with-pcre  ##=====>见末尾
    [root@web02/server/tools/nginx-1.16.0]# make  ##=====>
    [root@web02/server/tools/nginx-1.16.0]# make install  ##=====>
    [root@web02/server/tools/nginx-1.16.0]# ln -s /application/nginx-1.16.0/ /application/nginx  ##=====>创建一个软链接
    [root@web02/server/tools/nginx-1.16.0]# /application/nginx/sbin/nginx   ##=====>
    [root@web02/server/tools/nginx-1.16.0]# netstat -lntup|grep nginx  ##=====>
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13073/nginx: master 
    
    
    ####configure参数的作用
    --prefix=PATH  路径
    --user=USER    用户
    --group=GROUP  组
    --with-pcre    伪静态
    --with-http_stub_status_module 状态
    --with-http_ssl_module      加密 443
    

    编译安装配置:

    [root@web02 /application/nginx]# tree
    .
    ├── conf
    │   ├── fastcgi.conf         #和动态服务的接口配置参数,配合php
    │   ├── fastcgi.conf.default
    │   ├── fastcgi_params 
    │   ├── fastcgi_params.default
    │   ├── koi-utf
    │   ├── koi-win
    │   ├── mime.types            #媒体类型
    │   ├── mime.types.default
    │   ├── nginx.conf            #主配置文件
    │   ├── nginx.conf.default
    │   ├── scgi_params
    │   ├── scgi_params.default   #和动态服务的接口配置参数
    │   ├── uwsgi_params
    │   ├── uwsgi_params.default  #和动态服务的接口配置参数,配合Python
    │   └── win-utf
    ├── fastcgi_temp
    ├── html            #默认站点目录。  
    │   ├── 50x.html
    │   └── index.html  #默认的首页,10.0.0.8不指定文件,默认加载index.html首页。
    ├── logs
    │   ├── access.log  #访问日志
    │   ├── error.log   #Nginx错误日志。
    │   └── nginx.pid   #进程号对应文件。
    ├── sbin
    │   └── nginx       #启动命令。
    

    相关文章

      网友评论

          本文标题:day44 Nginx Web服务应用

          本文链接:https://www.haomeiwen.com/subject/mjlvnqtx.html