Nginx介绍

发布日期:2018-02-24    浏览次数:405

Nginx介绍

nginx

    nginx是个轻量级、高性能的web服务。
    nginx是一个免费的,开源的,高性能的http和反响代理服务,邮件代理服务和通用的tcp/udp代理服务。
    nginx 是HTTP, SMTP, POP3和IMAP 协议的web服务和反代服务,带有高并发、高性能和低内存利用的特性。

nginx的功能

    静态资源的web服务器
    反向代理服务器,实现负载均衡,是为七层代理服务器
    http协议反向代理服务器
    pop3/imap4 协议反向代理服务器
    FastCGI(lnmp),uWSGI(python) 等协议
    模块化(非DSO ),如zip,SSL

nginx与web 服务相关的功能

    虚拟主机(server) 
    支持 keep-alive 和管道连接
    访问日志(支持基于日志缓冲提高其性能)
    url rewirte
    路径别名
    基于IP及用户的访问控制
    支持速率限制及并发数限制
    重新配置和在线升级而无须中断客户的工作进程
    Memcached的GET接口

nginx的特性

    模块化设计
        nginx采用高度模块化设计,使得具有较好的扩展性,Nginx的模块分为核心模块、邮件模块和第三方模块。
    高可靠性
        高可靠性是指服务可靠性。
        Nginx采用一个主进程(master)和N个工作进程(worker)的工作模式,而worker进程才是真正复制相应用户请求的进程。
        配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。
        所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间通信。
    支持热部署
        Nginx使用主进程和工作进程的机制,使得Nginx支持热部署,这个热部署包括不停止服务更新配置文件、更新日志文件、以及更新服务器程序版本,也称为平滑升级。 
    低内存消耗
        Nginx对于内存的消耗是非常小的,特别是对于非活动连接。
        Nginx对于非活动连接是指,当我们开启持久连接功能时,用户连接不再发送数据后就会立即转为非活动连接,直到持久连接超时时间到达才销毁。
    高扩展性
        Nginx 的设计具有扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。
        因此,当对某一个模块修复 Bug 或进行升级时,可以专注于模块自身,无须在意其他。
    Nginx支持磁盘异步I/O(AIO)、内存映射机制(MMAP)、事件驱动机制(Event-driven)、单线程N请求等等。
    所以支持高并发请求解决C10K(并发连接10000)问题,而这些都是其他服务器无法支持的,

nginx程序架构

    主要是master进程和worker进程
    master/worker结构
        一个master进程:
            负责加载和分析配置文件
            管理worker进程
            平滑升级
        一个或多个worker进程
            处理并响应用户请求
        缓存相关的进程:
            cache loader:载入缓存对象
            cache manager:管理缓存对象

nginx 模块

    nginx 高度模块化,但其模块早期不支持DSO机制,1.9.11版本支持动态装载和卸载。
    模块分类:
        核心模块:
            core module
        标准模块:
            HTTP模块:ngx_http_*
                HTTP Core modules 默认功能
                HTTP Optional modules  需编译时指定
        Mail模块:
            ngx_mail_*
        Stream模块:
            ngx_stream_*
        第三方模块

nginx的功用

    静态的web资源服务器
        html,图片,js,css,txt等静态资源
    结合FastCGI/uWSGI/SCGI 等协议反向代理动态资源请求
    http/https 协议的反向代理
    imap4/pop3 协议的反向代理
    tcp/udp 协议的请求转发(反向代理)

nginx的安装

    官方:
        http://nginx.org/packages/centos/7/x86_64/RPMS
    Fedora-EPEL:
        https://mirrors.aliyun.com/epel/7/x86_64/
    编译安装:
        yum install pcre-devel openssl-devel zlib-devel
        useradd -r nginx
        ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_dav_module --with-http_stub_status_module --with-threads --with-file-aio
        make && make install
        编译安装nginx 选项:
            --prefix=/etc/nginx     安装路径
            --sbin-path=/usr/sbin/nginx     指明nginx 程序文件安装路径
            --conf-path=/etc/nginx/nginx.conf   主配置文件安装位置
            --error-log-path=/var/log/nginx/error.log   错误日志文件安装位置
            --http-log-path=/var/log/nginx/access.log   访问日志文件安装位置
            --pid-path=/var/run/nginx.pid   指明pid 文件安装位置
            --lock-path=/var/run/nginx.lock     锁文件安装位置
            --http-client-body-temp-path=/var/cache/nginx/client_temp   客户端body 部分的临时文件存放路径,如果服务器允许客户端使用put 方法提交大数据时,临时存放的磁盘路径
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp  作为代理服务器,服务器响应报文的临时文件存放路径
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp      作为fastcgi 代理服务器,服务器响应报文的临时文件存放路径
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp作为uwsgi   代理服务器,服务器响应报文的临时文件存放路径
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp    作为scgi 反代服务器,服务器响应报文的临时文件存放路径
            --user=nginx  指明以那个身份运行worker   进程,主控master进程一般由root 运行
            --group=nginx   
            --with-http_ssl_module      表示把指定模块编译进来

nginx目录和命令

    rpm -ql nginx(7
        /etc/logrotate.d/nginx
        /etc/nginx/
        /usr/bin/nginx-upgrade
        /usr/lib/systemd/system/nginx.service
        /usr/lib64/nginx/modules
        /usr/sbin/nginx
        /usr/share/doc/nginx-1.10.2
        /usr/share/licenses/nginx-1.10.2
        /usr/share/nginx/html/
        /usr/share/vim/vimfiles/ftdetect/nginx.vim
        /usr/share/vim/vimfiles/indent/nginx.vim
        /usr/share/vim/vimfiles/syntax/nginx.vim
        /var/lib/nginx
        /var/log/nginx
        /etc/rc.d/init.d/nginx(6)
        /etc/sysconfig/nginx(6)
        
    命令:nginx
        nginx — HTTP and reverse proxy server, mail proxy server
        nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
            nginx   默认我启动nginx,且不能与service和systemctl进行混用。
            -?,-h           帮助
            -v              显示版本
            -V              显示版本和配置选项然后退出
            -t              检查nginx 语法错误
            -T              测试配置并显示退出
            -q              在测试期间禁止显示非错误消息
            -s signal       发送信号给master进程,signal可为:stop, quit,reopen, reload
            -p prefix       设置前缀路径(default: /usr/share/nginx/)
            -c filename     指定配置文件(default: /etc/nginx/nginx.conf)
            -g directives   从配置文件中设置全局指令

    
    命令:nginx-upgrade
        nginx-upgrade - tool to upgrade nginx without any downtime
        用法:nginx-upgrade

nginx优缺点

    nginx的优点
        1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多于LVS了。
        2、Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一,相反LVS对网络稳定性依赖比较大。
        3、Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。
        3、可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。
        4、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。
        5、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP也是近几年非常流行的web架构,在高流量的环境中稳定性也很好。
        6、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可以考虑用其作为反向代理加速器。
        7、Nginx可作为中层反向代理使用,这一层面Nginx基本上无对手,唯一可以对比Nginx的就只有lighttpd了,不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃。
        8、Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。还有Nginx社区非常活跃,第三方模块也很多。
        9、抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
    
    Nginx的缺点是:
        1、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点。
        2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测,不支持Session的直接保持,但能通过ip_hash来解决。

本文网址:https://www.wyxxw.cn/blog-detail-22-25-508.html

返回列表

非特殊说明,本文版权归原作者所有,转载请注明出处

提示:本站所有资源仅供学习与参考,请勿用于商业用途。图片来自互联网~如侵犯您的权益,请联系QQ:1067507709.

提示:转载请注明来自:https://www.cnblogs.com/shenxm/p/8462544.html 。 转载人:momo