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 start

2、启动后的常用管理语法
    nginx -s signal
    其中signal可以为下列值
        stop — fast shutdown
        quit — graceful shutdown
        reload — reloading the configuration file
        reopen — reopening the log files

3、nginx的停止
    stop — 快速停止,粗暴模式,不再接受新请求,已经处理的请求被强制关闭,示例如下
        # /usr/sbin/nginx -s stop
    quit — 优雅停止,不再接受新请求,等待当前的工作进程完成当前的服务器请求,并停止nginx
        # /usr/sbin/nginx -s quit
    通过服务方式关闭nginx
        # service nginx stop

4、配置文件重新装载
    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

四、Nginx配置文件结构

1、配置说明
    a、nginx配置文件由不同模块组成,通过模块化的方式实现不同的功能。
    b、配置指令分为简单指令和块指令。一个简单的指令,包括名称,用空格分隔参数,并用分号(;)结束。
    c、一个块指令由一个或多个简单具有相同的结构简单指令组合而成,使用一组用{}括号括起来表示块结束。
    d、上下文:一个块的指令包含有大括号其他指令,它被称为上下文(例如:事件,HTTP,服务器,和位置)。
         放置在配置文件中的任何上下文以外的指令都被认为是在主上下文。
    e、检查配置文件语法:  nginx  -t
    f、指定nginx要加载的配置文件:nginx  -c   

2、配置文件构成
    Nginx配置文件结构主要由以下几部分构成。
    ......
    events    #Events用于配置IO模型,如epoll、kqueue、select或poll等,它们是必备模块。
        {
         ......
        }

    http              #http上下文专用于配置用于http的各模块
        {               #包括客户端类指令,文件IO类指令,hash类指令,套接字类指令等
         ......
                server     #用于定义虚拟服务器相关的属性,常见的指令有backlog、rcvbuf、bind及sndbuf等
                {
                 ......
                }
                server
                {
                 ......
                }
          ......
         }   

3、基本的nginx.conf配置描述
# more /etc/nginx/nginx.conf

#user  nobody;        #指定运行worker进程的用户和组
worker_processes  1;  #worker线程的个数;通常应该为物理CPU核心个数减1;

#error_log  logs/error.log;        #配置错误日志文件位置及日志记录级别
#error_log  logs/error.log  notice;#可用于main、http、server及location上下文中
#error_log  logs/error.log  info;  #语法格式为error_log file |stderr [debug|info|notice|warn|error|crit|alert|emerg]

#pid        logs/nginx.pid;          #指定pid存放路径   

events {
    worker_connections  1024; 每个worker进程所能够响应的最大并发请求数;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #此部分用于设置访问日志的格式及位置
    #access_log  logs/access.log  main;

    sendfile        on;    #文件发送
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;  #保持连接的超时时长,默认为65s

    #gzip  on;   #是否开启gzip压缩

    server {
        listen       80;        #定义监听的端口 Author:Leshami
        server_name  localhost; #定义监听的主机 Blog  :http://blog.csdn.net/leshami

        #charset koi8-r;        #定义字符集

        #access_log  logs/host.access.log  main;  #访问日志文件存放路径

        location / {      #location通常用于server上下文中,用于设定某URI的访问属性。location可以嵌套。
            root   html;  #默认首页文件位置,此处当前为相对路径,/etc/nginx/html
            index  index.html index.htm; #首页文件顺序,如果找不到index.html,则找index.htm
        }

        #以下部分根据http状态码重定向错误页面
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

五、获取Nginx帮助

[root@wms ~]# nginx -h
nginx version: nginx/1.8.0
Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /etc/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file
时间: 2024-10-20 07:43:37

Nginx 概述及日常管理的相关文章

DRBD 的日常管理

DRBD是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案.DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群.对于在高可用集群的环境里,尽管DRBD磁盘资源被作为一种集群服务由集群管理组件接管,但对于DRBD的常用命令的掌握还是非常有必要的.本文描述了一些常用的DRBD日常管理命令,供大家参考. 有关DRBD的相关知识,可以参考: DRBD原理及特性概述 快速安装及部署DRBD 一.DRBD用户空间管理工具 drbdadm: 高层的 DRBD 程序管理套件工具.

Linux 系统日常管理

概述:系统日常管理的主要内容包括:服务.端口.文件.磁盘.系统.进程.CPU.内存.网络.用户.日志等.以Red Had 6.5为演示环境,简单介绍各项管理 1.服务管理      1.服务一览        查看当前所有服务的状态:service --status-all                         2.启动.停止.重启服务        启动服务:service 服务名  start        停止服务:service 服务名  stop        重启服务:se

Oracle DBA 日常管理

oracle Oracle DBA 日常管理修改:2000/8/23作者:Thomas B. Cox,with Christine Choi目的:这篇文档有很详细的资料记录着对一个甚至更多的ORACLE 数据库每天的,每月的,每年的运行的状态的结果及检查的结果,在文档的附录中你将会看到所有检查,修改的SQL和PL/SQL 代码.修改笔记: 1.1 在Steve DeNunzio 的'existext.sql'中所识别的类型1.2 固定的类型1.3 加的Gnu Public License:在重建

如何实现邮件服务的日常管理

实现邮件服务的日常管理 1.邮件客户端支持的邮件协议 * Outlook 2003 :MAPI,SMTP,P0P3,IMAP4,HTTP * Outlook Express :SMTP,POP3,IMAP4,NNTP * Outlook Web Access :HTTP SMTP协议:Simple Mail Transfer Protocol,通常用于把电子邮件从客户端传输到服务器,或从某一台服务器传输到另一台服务器 POP3协议:Post Office Protocol,是一种离线邮件协议,采

DBA日常管理——数据归档(Archiving-Data)

原文:DBA日常管理--数据归档(Archiving-Data) 问题:        随着数据库越来越大,对性能及管理方面的挑战也会越来越大.每次查询可能需要查找更多的数据页,特别是当查询存在扫描操作时,会导致查询越来越慢.同时,需要备份的数据也会越来越多,备份操作持续越来越久.备份文件及数据库所使用的数据文件也会越来越大等等,一系列的问题都会随之产生.      此时数据归档就变成非常重要.数据归档和容量规划其实息息相关,不过容量规划将在别的文章中介绍.      数据归档的目标是监控数据的

《Windows Server 2012 Hyper-V虚拟化管理实践》——3.2 Hyper-V主机日常管理

3.2 Hyper-V主机日常管理 Hyper-V主机的日常管理任务主要是配置虚拟机环境.其中,创建任务(创建虚拟机.虚拟硬盘.软件).磁盘管理任务(编辑磁盘.检查磁盘)以及虚拟交换机管理器的使用将在专门的章节分别介绍,其他管理任务将在本节介绍. 3.2.1 Hyper-V主机管理菜单 Hyper-V主机的所有管理任务集成在管理菜单或者右侧窗格的"操作"面板中,两者完成的管理任务完全相同,管理员根据自己的操作习惯选择即可,如图3-9所示."操作"面板中,上半部分是H

《Windows Server 2012 Hyper-V虚拟化管理实践》一3.2 Hyper-V主机日常管理

text Hyper-V主机的日常管理任务主要是配置虚拟机环境.其中,创建任务(创建虚拟机.虚拟硬盘.软件).磁盘管理任务(编辑磁盘.检查磁盘)以及虚拟交换机管理器的使用将在专门的章节分别介绍,其他管理任务将在本节介绍. 3.2.1 Hyper-V主机管理菜单 Hyper-V主机的所有管理任务集成在管理菜单或者右侧窗格的"操作"面板中,两者完成的管理任务完全相同,管理员根据自己的操作习惯选择即可,如图3-9所示."操作"面板中,上半部分是Hyper-V主机管理功能列

kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1290269 KVM虚拟化学习笔记系列文章列表 ---------------------------------------- kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795 kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 h

华为将建立一个让任正非退出日常管理

据国外媒体报道,尽管去年电信设备行业条件困难,但华为技术预计,依然将发布强劲增长的利润报告.不过,在美国严密审查该公司之时,这家私人控股的公司还面临透明度问题.在一封标注日期为12月31日,但直到上周五才发送的致职员信中,轮值CEO郭平表示,该公司去年净利润将达到约24亿美元,营收超350亿美元.相比2011年,利润将同比增长30%,营收同比增长8%.这个业绩说明,华为已从利润下降的2011年恢复过来,并且迅速扭转了去年上半年的趋势,当时该公司运营利润下降了22%.郭平没有说明业绩好转的原因,只