1Nginx入门教程Nginx是一个轻量级的web服务器/反向代理服务器和邮件(IMAP/POP3)代理服务器,并在BSD-like下发布。它由俄罗斯程序员IgorSysoev开发,被俄罗斯大型门户网站和搜索引擎Rambler(俄语:Рамблер)使用。其特点是占用内存少,并发能力强。事实上,nginx的并发能力在同类型的web服务器中确实表现的更好。Nginx(“enginex”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx由IgorSysoev开发,用于俄罗斯访问量第二大的Rambler.ru站点,第一个公开版本0.1.0于2004年10月4日发布。它在类BSD许可下发布其源代码,并以其稳定、丰富的功能集、示例配置文件和低系统资源消耗。它已经在众多高流量的俄罗斯网站上使用了很长时间,包括Yandex、Mail.Ru、VKontakte和Rambler。据Netcraft统计,2012年8月,全球最繁忙的网站中有11.48%使用Nginx作为其服务器或代理服务器。目前,主流互联网公司360、百度、新浪、腾讯、阿里等,以及超过70%的中国互联网公司都在使用nginx作为他们的web服务器。Nginx的特点是内存少,并发性强。事实上,nginx的并发性在同类型的web服务器中确实表现的更好。Nginx由内核和模块组成。其中,内核的设计非常小巧简洁,所做的工作也非常简单。它只是通过配置文件将客户端请求映射到一个location块(location是Nginx配置中的一条指令,用于URL匹配),在这个location配置的每条命令都会启动不同的模块来完成相应的工作。Nginx相对于Apache的优势:高并发响应性能非常好,官方Nginx并发处理静态文件5w/s反向代理性能非常强。(可用于负载平衡)内存和CPU使用率低。(Apache的1/5-1/10)对后端服务进行健康检查。支持PHPcgi模式和fastcgi模式。配置代码简洁易用。2.Nginx工作原理及安装配置Nginx由内核和模块组成。其中内核的设计非常小巧简洁,完成的工作也非常简单。只需查找配置文件,客户端请求就会被映射到一个location块(location是Nginx配置中的一个指令,用于URL匹配),在这个位置配置的每条指令都会启动不同的模块来完成相应的工作.Nginx模块在结构上分为核心模块、基础模块和第三方模块:核心模块:HTTP模块、EVENT模块和MAIL模块基础模块:HTTPAccess模块??、HTTPFastCGI模块、HTTPProxy模块和HTTPRewrite模块、第三方模块:HTTPUpstreamRequestHash模块、Notice模块和HTTPAccessKey模块。Nginx的高并发得益于它采用了epoll模型。与传统的服务器程序架构不同,epoll是在Linux内核2.6之后才出现的。Nginx采用epoll模型,异步非阻塞,而Apache采用select模型Select特点:select选择句柄时,会遍历所有句柄,也就是说当一个句柄有事件响应时,select需要遍历所有句柄获取哪些句柄有Event通知因此效率很低。epoll的特点:epoll选择句柄事件不是遍历,而是事件响应,即立即选择句柄上的事件,不需要遍历整个句柄列表,所以效率非常高3.Nginx下载与安装1.Nginx下载地址:nginx-1.13.0.tar.gz,下载到:/usr/local/software/2。Nginx解压安装:tar-zxvfnginx-1.13.0.tar.gz-C./3。Nginx编译./configure报错3.1解决./configure:error:Ccompilerccisnotfound错误:错误原因:缺少编译环境,安装源码编译需要的工具和库:执行命令:yuminstallgccgcc-c++ncurses-develperl再次编译:./configure--prefix=/usr/local/nginx3.2已解决./configure:error:HTTPrewrite模块需要PCRElibrary。错误:错误原因:缺少HTTP重写模块模块,请禁用或安装所需模块。我们选择安装模块:执行命令:yuminstallpcrepcre-devel3.3解决./configure:error:theHTTPgzipmodulerequiresthezlibrary.错误:错误原因:缺少HTTPzlib类库,我们选择安装模块:执行命令:yuminstallzlibgzipzlib-devel4。编译成功5、安装Nginx:安装命令:make&makeinstall1.2Nginx启动1、查看安装目录:cdconf存放配置文件html网页文件logs存放日志sbinshell启动、停止等脚本2、启动nginx查看进程常见问题:解决nginx:[emerg]bind()to0.0.0.0:80failed(98:Addressalreadyinuse)错误:错误原因:无法绑定80端口,80端口已被占用。3、停止nginx并重新加载配置文件执行命令:kill–INT进程号启动成功:重新读取配置文件:nginx-sreload4、nginx信号控制TERM,INT快速停止(杀死进程)QUIT优雅关闭流程,请求结束后关闭HUP更改配置文件,重新读取配置文件USR1顺利重新读取日志,当日志按月/天划分时使用USR2顺利升级WINCH优雅关闭旧进程(用USR2升级)5.打开浏览器1.3常用命令进入nginx安装目录进入sbin启动常用命令./nginx查看nginx.conf配置文件./nginx-tRestart./nginx-sreloadStop./nginx-sstop1.4学习Nginx推荐书籍:《深入剖析Nginx》《实战Nginx:取代Apache的高性能Web服务器》《深入理解Nginx:模块开发与架构解析》《深入理解Nginx:模块开发与架构解析》《决战Nginx技术卷:高性能Web服务器部署与运维》《决战Nginx系统卷:高性能Web服务器详解与运维》
