重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1.什么是Nginx
创新互联是一家专注于网站建设、成都网站建设与策划设计,西平网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:西平等地区。西平做网站价格咨询:18982081108Nginx来自俄罗斯的Igor Sysoev在为Rambler Media(http://www.rambler.ru/)工作期间,使用C语言开发了Nginx。Nginx作为Web服务器,一直为俄罗斯著名的门户网站Rambler Media提供着出色、稳定的服务。
Igor Sysoev将Nginx的代码开源,并且赋予其最自由的2-clause BSD-like license许可证。由于Nginx使用基于事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化的设计和自由的许可证使得扩展Nginx功能的第三方模块层出不穷,而且优秀的设计带来了极佳的稳定性,因此其作为Web服务器被广泛应用到大流量的网站上,包括腾讯、新浪、网易、淘宝等访问量巨大的网站。
Nginx是一个跨平台的Web服务器,可运行在Linux、FreeBSD、Solaris、AIX、Mac OS、Windows等操作系统上,并且它还可以使用当前操作系统特有的一些高效API来提高自己的性能。
例如,对于高效处理大规模并发连接,它支持Linux上的epoll(epoll是Linux上处理大并发网络连接的利器,9.6.1节中将会详细说明epoll的工作原理)、Solaris上的event ports和FreeBSD上的kqueue等。
又如,对于Linux,Nginx支持其独有的 sendfile系统调用,这个系统调用可以高效地把硬盘中的数据发送到网络上(不需要先把硬盘数据复制到用户态内存上再发送),这极大地减少了内核态与用户态数据间的复制动作。
2.为什么选择Nginx
为什么选择Nginx?因为它具有以下特点:
(1)更快
这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应;另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。
(2)高扩展性
Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须在意其他。而且在HTTP模块中,还设计了HTTP过滤器模块:一个正常的HTTP模块在处理完请求后,会有一串HTTP过滤器模块对请求的结果进行再处理。这样,当我们开发一个新的HTTP模块时,不但可以使用诸如HTTP核心模块、events模块、log模块等不同层次或者不同类型的模块,还可以原封不动地复用大量已有的HTTP过滤器模块。这种低耦合度的优秀设计,造就了Nginx庞大的第三方模块,当然,公开的第三方模块也如官方发布的模块一样容易使用。
Nginx的模块都是嵌入到二进制文件中执行的,无论官方发布的模块还是第三方模块都是如此。这使得第三方模块一样具备极其优秀的性能,充分利用Nginx的高并发特性,因此,许多高流量的网站都倾向于开发符合自己业务特性的定制模块。 模块化设计、较好的扩展性,编译到Nginx,并随Nginx启动而启动,但是Tengine支持模块动态装卸机制。
(3)高可靠性
高可靠性是我们选择Nginx的最基本条件,因为Nginx的可靠性是大家有目共睹的,很多家高流量网站都在核心服务器上大规模使用Nginx。Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用模块都非常稳定,每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。
(4)低内存消耗
一般情况下,10 000个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存,这是Nginx支持高并发连接的基础。
(5)单机支持10万以上的并发连接
这是一个非常重要的特性!随着互联网的迅猛发展和互联网用户数量的成倍增长,各大公司、网站都需要应付海量并发请求,一个能够在峰值期顶住10万以上并发请求的Server,无疑会得到大家的青睐。理论上,Nginx支持的并发连接上限取决于内存,10万远未封顶。当然,能够及时地处理更多的并发请求,是与业务特点紧密相关的,本书第8~11章将会详细说明如何实现这个特点。
(6)热部署
master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,即可以在7×24小时不间断服务的前提下,升级Nginx的可执行文件。当然,它也支持不停止服务就更新配置项、更换日志文件等功能。
(7)最自由的BSD许可协议
这是Nginx可以快速发展的强大动力。BSD许可协议不只是允许用户免费使用Nginx,它还允许用户在自己的项目中直接使用或修改Nginx源码,然后发布。这吸引了无数开发者继续为Nginx贡献自己的智慧。
(8)支持事件驱动、AIO、mmap
3.Nginx基本功能:
(1)静态资源的web服务器,能缓存打开的文件描述符。
(2)http、smtp、pop3协议的反向代理服务器(保护服务器,为服务器过滤不良用户请求,并封装用户请求,扮演成某些服务区,提供缓存减轻后端压力)
(3)缓存加速、负载均衡
(4)支持FastCGI(fpm,LNMP),uWSGI(Python)
(5)模块化(非DSO机制)过滤器,zip、ssi及图像的大小调整
(6)支持SSL,https服务。
4.扩展功能
基于名称和IP的虚拟机
支持Keepalive
支持平滑升级
定制访问日志、支持使用日志缓冲区提供日志存储性能
支持url rewrite
支持路径别名
支持基于IP及用户的访问控制
支持速率限制,支持并发数限制
5.Nginx的基本架构:
一个master进程。负责生成多个worker进程。
事件驱动:epoll(边缘触发,Linux) kqueue(BSD)
I/O复用器:select,poll,rt signal
支持sendfile、sendfile64
支持AIO
支持mmap内存映射
nginx的工作模式:非阻塞、事件驱动,由一个master进程生成多个worker进程,每个worker响应n个请求。
6.模块类型:
核心模块、Standard HTTP modules、Optional HTTP modules、Mail modules、第三方模块
7.源码安装
yum -y install gcc gcc-c++ yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel tar xf nginx-VERSION.tar cd nginx-VERSION groupadd -r nginx useradd -r nginx -g nginx ./configure --help(获取帮助) --with-xx:原本没有启动,启动起来;--without-xx:原本已启动,停止启动 ./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/log/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi make -j 4 && make install mkdir -pv /var/tmp/nginx/{client,proxy,fastcgi,uwsgi} 启动nginx /usr/local/nginx/sbin/nginx