Nginx
Posted qingaoaoo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx相关的知识,希望对你有一定的参考价值。
1.大家都说nginx快?快的原因是什么?
Nginx采用的是异步非阻塞的epoll模型;apache是采用多线程多进程,一旦连接数增多,apache必然要生成更多的进程来响应请求,一旦进程多了,cpu对于进程的切换就频繁了,很耗资源和时间,所以就导致apache性能降低了;
Nginx采用异步非阻塞epoll模型,对于Nginx来说,把一个完整的连接请求处理都划分成了事件,一个一个的事件。比如accept(),receive(),磁盘I/O,send()等,每部分都有相应的模块去处理。真正的核心就是事件收集和分发模块,这就是管理所有模块的核心。
例子:apache多线程进程类似于一对一的服务员,客人多,服务员就得增多,Nginx是把服务员分成了接客的,点菜的,上菜的等模块;
2.正向代理和反向代理
网络代理分为正向代理和反向代理
正向代理,当客户端无法访问外部资源的时候(由于诸如墙这样的原因),可以通过一个正向代理去间接地访问,所以客户端需要配置代理服务器的ip。
反向代理,客户端是无感知代理的存在,以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端。
作用:
1、保证内网的安全,公网作为访问地址,web服务器谁内网
2、负载均衡
3.项目发布如何不影响到正常用户访问,实现7*24小时访问
可以两台机子互为热备,平时各自负责各自的服务。在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性,从而保证服务器7*24小时运行。
Nginx 是什么
Nginx 是免费的开源软件,根据类 BSD 许可证的条款发布。
Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。大部分 Web 服务器使用 Nginx,通常作为负载均衡器。Nginx 是免费的开源软件,根据类 BSD 许可证的条款发布。
Nginx 软件由伊戈尔·赛索耶夫创建并于 2004 年首次公开发布。 2011 年成立同名公司以提供支持。2019 年 3 月 11 日,Nginx 公司被 F5 Networks 以 6.7 亿美元收购。
Nginx 特点
Nginx 可以部署在网络上使用 FastCGI 脚本、SCGI 处理程序、WSGI 应用服务器或 Phusion Passenger 模块的动态 HTTP 内容,并可作为软件负载均衡器。
Nginx 使用异步事件驱动的方法来处理请求。Nginx 的模块化事件驱动架构可以在高负载下提供更可预测的性能。
Nginx 是一款面向性能设计的 HTTP 服务器,相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的 Apache 不同,Nginx 不采用每客户机一线程的设计模型,而是充分使用异步逻辑从而削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在 Linux 操作系统下,Nginx 使用 epoll 事件模型,得益于此,Nginx 在 Linux 操作系统下效率相当高。同时 Nginx 在 OpenBSD 或 FreeBSD 操作系统上采用类似于 epoll 的高效事件模型 kqueue。
根据 Netcraft 在 2016 年 11 月网络服务器调查, Nginx 被发现是所有“活跃”站点(被调查站点的 18.22%)和百万最繁忙站点(被调查站点的 27.83%)中使用次数最多的 Web 服务器。根据 W3Techs 的数据,前 100 万个网站中的 37.7%,前 10 万个网站中的 49.7%,以及前 10000 个网站中的 57.0%被使用。 据 BuiltWith 统计,在全球前 10000 个网站中,有 38.2%的网站使用 Nginx。 维基百科使用 Nginx 作为其 SSL 终端代理。 从 OpenBSD 5.2 版本(2012 年 11 月 1 日)开始,Nginx 成为了 OpenBSD 基础系统的一部分,提供了替代 Apache 1.3 系统的替代方案, 但是后来被替换为 OpenBSD 自己的 httpd(8)。
可大量并行处理
Nginx 在官方测试的结果中,能够支持五万个并行连接,而在实际的运作中,可以支持二万至四万个并行连接。
Nginx 与 Apache 相比
Nginx 的编写有一个明确目标就是超越 Apache Web 服务器的性能。 Nginx 提供开箱即用的静态文件,使用的内存比 Apache 少得多,每秒可以处理大约四倍于 Apache 的请求。 低并发下性能与 Apache 相当,有时候还低于,但是在高并发下 Nginx 能保持低资源低消耗高性能。还有高度模块化的设计,模块编写简单。配置文件简洁。
这种性能提升的代价是降低了灵活性,例如能够以每个文件为基础覆盖系统范围的访问设置( Apache 使用.htaccess 文件来完成这个工作,而 Nginx 并没有内置这样的功能)。 以前,向 Nginx 添加第三方模块需要使用静态链接的模块从源代码重新编译应用程序。在版本 1.9.11 中部分地克服了这一点,增加了动态模块加载。但是,模块仍然必须与 Nginx 同时编译,而不是所有的模块都与这个系统兼容——有些需要更老的静态链接过程。
Nginx 模块
整体采用模块化设计是 Nginx 的一个重大特点,甚至 http 服务器核心功能也是一个模块。旧版本的 Nginx 的模块是静态的,添加和删除模块都要对 Nginx 进行重新编译,1.9.11 以及更新的版本已经支持动态模块加载。
数据统计
截至 2017 年 3 月,中国注册域名总数的 9.65%使用 Nginx。
截至 2018 年 1 月,Nginx 服务或者代理了全球 30.46% 的网站。
PHP 集成
自 php-5.3.3 起,PHP-FPM 加入到了 PHP 核心,编译时加上–enable-fpm 即可提供支持。PHP-FPM 以守护进程在后台运行,Nginx 响应请求后,自行处理静态请求,PHP 请求则经过 fastcgi_pass 交由 PHP-FPM 处理,处理完毕后返回。Nginx 和 PHP-FPM 的组合,是一种稳定、高效的 PHP 运行方式,效率要比传统的 Apache 和 mod_php 高出不少。
PHP-FPM 不支持 Windows 平台,由于没有 fastcgi 进程管理器管理 php-cgi.exe,因此一旦 php-cgi.exe 崩溃退出,前端将失去响应,这时 Nginx 会返回“The page you are looking for is temporarily unavailable. Please try again later.”的错误信息。因此在 Windows 上用 Nginx 和 php-cgi.exe 组合来运行 PHP 的方式并不可靠,稳定性有待提高。
以上是关于Nginx的主要内容,如果未能解决你的问题,请参考以下文章