当前位置 主页 > 服务器问题 > nginx问题汇总 >

    Nginx 介绍及日常管理的详解

    栏目:nginx问题汇总 时间:2018-09-16 16:08

    这篇文章主要介绍了Nginx 介绍及日常管理的详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

    Nginx 介绍及日常管理的详解

    Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、 腾讯等。本文简要描述了Nginx的基本特性及其配置文件的简单描述。

    一、Nginx的工作进程

    1、一个主进程:  主进程的主要目的是读取和评估配置,启动、终止及维护工作进程以及创建、绑定及关闭套接字。 2、多个工作进程:  工作进程处理web请求。nginx的采用了基于事件的模型和操作系统相关的机制,有效地分配工作进程之间的请求。  负责解析http协议;提供反向代理及过滤功能;nginx任何能完成的其它任务;  工作进程的数量被定义在配置文件中,可以使用配置文件定义固定的数量,或根据可用的CPU内核数实现自动调整其数量。3、缓存加载器(cache loader):  检查缓存存储中的缓存对象;  使用缓存元数据建立内存数据库;  接收、传入并处理来自客户端的连接;4、缓存管理器(cache manager):  缓存的失效及过期检验;5、基于配置文件定义Nginx的工作方式  nginx的工作方式及其模块的工作是在配置文件中确定的。  缺省情况下,其配置文件为nginx.conf,通常位于/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx目录下。

    二、Nginx特性

    1、Nginx的模块化特性    Nginx服务器与Apache httpd类似,采用了基于模块化的构建方式。    在安装部署Nginx服务器时,一定要遵循:最小化模块安装,以节省无用模块对Nginx的性能影响及占用系统资源。    a、从功能上划分      Nginx核心模块:包括Nginx的内核模块和事件驱动模块      http服务器模块:这类模块包括三类模块,即HTTP的内核模块和标准模块以及可选的HTTP模块    b、从发布模块的方式来划分      官方模块      第三方模块    c、从模块的可选项来划分      必选模块(Main和Events)      可选模块2、Nginx功能特性    模块化设计、较好扩展性    高可靠性      master-->worker    低内存消耗      10000个keep-alive连接在Nginx仅消耗2.5MB    支持热部署      不停机而更新配置文件、更换日志文件、更新服务器程序版本  基本功能:    静态资源的web服务器,能缓存打开的文件描述符;    http, smtp, pop3协议的反向代理服务器,缓存、负载均衡;    支持FastCGI (fpm);    模块化,非DSO机制,过滤器zip,SSI及图像大小调整;    支持SSL;    非阻塞、事件驱动、一个master生成一个或多个worker, 每个worker响应n个请求;  扩展功能:    基于名称和IP的虚拟主机;    支持keepalive    支持平滑升级    定制访问日志 ,支持使用日志缓冲区提高日志存储性能    支持url rewrite    支持路径别名    支持基于IP及用户的访问控制    支持速率限制,支持并发数限制  Nginx的基本架构:    一个master进程,生成一个或多个worker    事件驱动: epoll, kqueue, /dev/poll (event ports)      消息通知:select, poll, rt signals    支持sendfile, sendfile64    支持AIO    支持mmap  模块类型:    核心模块    Standard HTTP modules    Optional HTTP modules    Mail modules     3rd party modules

    三、Nginx的启动、停止、配置文件重新装载

    1、启动  直接使用命令启动,示例,-c后面跟上配置文件路径及名字,如果忽略-c,则使用缺省的配置文件  # /usr/sbin/nginx -c /etc/nginx/nginx.conf  使用服务方式启动,示例如下  # service nginx start2、启动后的常用管理语法  nginx -s signal  其中signal可以为下列值    stop — fast shutdown    quit — graceful shutdown    reload — reloading the configuration file    reopen — reopening the log files3、nginx的停止  stop — 快速停止,粗暴模式,不再接受新请求,已经处理的请求被强制关闭,示例如下    # /usr/sbin/nginx -s stop  quit — 优雅停止,不再接受新请求,等待当前的工作进程完成当前的服务器请求,并停止nginx    # /usr/sbin/nginx -s quit  通过服务方式关闭nginx    # service nginx stop4、配置文件重新装载  reload — 重新载入配置文件    nginx配置文件的任意变更,不会被立即生效,需要使用重载命令或重启nginx     一旦主进程接收到重新加载配置的信号,它检查新的配置文件的语法正确性,并尝试应用新的配置。    否则,主进程回滚所做的更改,并继续使用旧的配置文件工作。    旧的工作进程,接收命令关闭, 停止接受新的连接,并继续服务于当前的请求,直至当前请求服务完毕后,旧的工作进程退出    进程信号可以被发送到nginx,通过Linux/Unix的 kill工具来杀死进程。    在这种情况下的带有进程ID的信号被直接发送到一个进程。    缺省情况下,nginx的主进程PID被写入到位于/usr/local/logs或者/var/run目录的nginx.pid文件。    例如,如果主进程ID是1628,发送nginx正常关机的退出信号,则执行:    kill -s QUIT 1628  通过服务方式重载配置文件    # service nginx reload