Nginx 介绍及日常管理的详解
Nginx介绍及日常管理的详解
Nginx(发音同enginex)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好.中国大陆使用nginx网站用户有:新浪、网易、腾讯等。本文简要描述了Nginx的基本特性及其配置文件的简单描述。
一、Nginx的工作进程
1、一个主进程: 主进程的主要目的是读取和评估配置,启动、终止及维护工作进程以及创建、绑定及关闭套接字。 2、多个工作进程: 工作进程处理web请求。nginx的采用了基于事件的模型和操作系统相关的机制,有效地分配工作进程之间的请求。 负责解析http协议;提供反向代理及过滤功能;nginx任何能完成的其它任务; 工作进程的数量被定义在配置文件中,可以使用配置文件定义固定的数量,或根据可用的CPU内核数实现自动调整其数量。 3、缓存加载器(cacheloader): 检查缓存存储中的缓存对象; 使用缓存元数据建立内存数据库; 接收、传入并处理来自客户端的连接; 4、缓存管理器(cachemanager): 缓存的失效及过期检验; 5、基于配置文件定义Nginx的工作方式 nginx的工作方式及其模块的工作是在配置文件中确定的。 缺省情况下,其配置文件为nginx.conf,通常位于/usr/local/nginx/conf,/etc/nginx,或者/usr/local/etc/nginx目录下。
二、Nginx特性
1、Nginx的模块化特性 Nginx服务器与Apachehttpd类似,采用了基于模块化的构建方式。 在安装部署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 支持平滑升级 定制访问日志,支持使用日志缓冲区提高日志存储性能 支持urlrewrite 支持路径别名 支持基于IP及用户的访问控制 支持速率限制,支持并发数限制 Nginx的基本架构: 一个master进程,生成一个或多个worker 事件驱动:epoll,kqueue,/dev/poll(eventports) 消息通知:select,poll,rtsignals 支持sendfile,sendfile64 支持AIO 支持mmap 模块类型: 核心模块 StandardHTTPmodules OptionalHTTPmodules Mailmodules 3rdpartymodules
三、Nginx的启动、停止、配置文件重新装载
1、启动 直接使用命令启动,示例,-c后面跟上配置文件路径及名字,如果忽略-c,则使用缺省的配置文件 #/usr/sbin/nginx-c/etc/nginx/nginx.conf 使用服务方式启动,示例如下 #servicenginxstart 2、启动后的常用管理语法 nginx-ssignal 其中signal可以为下列值 stop—fastshutdown quit—gracefulshutdown reload—reloadingtheconfigurationfile reopen—reopeningthelogfiles 3、nginx的停止 stop—快速停止,粗暴模式,不再接受新请求,已经处理的请求被强制关闭,示例如下 #/usr/sbin/nginx-sstop quit—优雅停止,不再接受新请求,等待当前的工作进程完成当前的服务器请求,并停止nginx #/usr/sbin/nginx-squit 通过服务方式关闭nginx #servicenginxstop 4、配置文件重新装载 reload—重新载入配置文件 nginx配置文件的任意变更,不会被立即生效,需要使用重载命令或重启nginx 一旦主进程接收到重新加载配置的信号,它检查新的配置文件的语法正确性,并尝试应用新的配置。 否则,主进程回滚所做的更改,并继续使用旧的配置文件工作。 旧的工作进程,接收命令关闭,停止接受新的连接,并继续服务于当前的请求,直至当前请求服务完毕后,旧的工作进程退出 进程信号可以被发送到nginx,通过Linux/Unix的kill工具来杀死进程。 在这种情况下的带有进程ID的信号被直接发送到一个进程。 缺省情况下,nginx的主进程PID被写入到位于/usr/local/logs或者/var/run目录的nginx.pid文件。 例如,如果主进程ID是1628,发送nginx正常关机的退出信号,则执行: kill-sQUIT1628 通过服务方式重载配置文件 #servicenginxreload
四、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 #usernobody;#指定运行worker进程的用户和组 worker_processes1;#worker线程的个数;通常应该为物理CPU核心个数减1; #error_loglogs/error.log;#配置错误日志文件位置及日志记录级别 #error_loglogs/error.lognotice;#可用于main、http、server及location上下文中 #error_loglogs/error.loginfo;#语法格式为error_logfile|stderr[debug|info|notice|warn|error|crit|alert|emerg] #pidlogs/nginx.pid;#指定pid存放路径 events{ worker_connections1024;每个worker进程所能够响应的最大并发请求数; } http{ includemime.types; default_typeapplication/octet-stream; #log_formatmain'$remote_addr-$remote_user[$time_local]"$request"' #'$status$body_bytes_sent"$http_referer"' #'"$http_user_agent""$http_x_forwarded_for"'; #此部分用于设置访问日志的格式及位置 #access_loglogs/access.logmain; sendfileon;#文件发送 #tcp_nopushon; #keepalive_timeout0; keepalive_timeout65;#保持连接的超时时长,默认为65s #gzipon;#是否开启gzip压缩 server{ listen80;#定义监听的端口Author:Leshami server_namelocalhost;#定义监听的主机Blog:http://blog.csdn.net/leshami #charsetkoi8-r;#定义字符集 #access_loglogs/host.access.logmain;#访问日志文件存放路径 location/{#location通常用于server上下文中,用于设定某URI的访问属性。location可以嵌套。 roothtml;#默认首页文件位置,此处当前为相对路径,/etc/nginx/html indexindex.htmlindex.htm;#首页文件顺序,如果找不到index.html,则找index.htm } #以下部分根据http状态码重定向错误页面 #error_page404/404.html; #redirectservererrorpagestothestaticpage/50x.html # error_page500502503504/50x.html; location=/50x.html{ roothtml; } } }
五、获取Nginx帮助
[root@wms~]#nginx-h nginxversion:nginx/1.8.0 Usage:nginx[-?hvVtq][-ssignal][-cfilename][-pprefix][-gdirectives] Options: -?,-h:thishelp -v:showversionandexit -V:showversionandconfigureoptionsthenexit -t:testconfigurationandexit -q:suppressnon-errormessagesduringconfigurationtesting -ssignal:sendsignaltoamasterprocess:stop,quit,reopen,reload -pprefix:setprefixpath(default:/etc/nginx/) -cfilename:setconfigurationfile(default:/etc/nginx/nginx.conf) -gdirectives:setglobaldirectivesoutofconfigurationfile
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!