侧边栏壁纸
博主头像
兰若春夏 博主等级

一日为坤,终生为坤

  • 累计撰写 19 篇文章
  • 累计创建 12 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Nginx文档

奥德坤
2021-03-19 / 0 评论 / 2 点赞 / 480 阅读 / 0 字

Nginx基础

什么是nginx,历史,优势.对比老派的Apache,IIS

什么是中间件

中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序,它包括web服务器、事务监控器和消息队列软件。

image.png

Nginx

来自俄罗斯的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服务器被广泛应用到大流量的网站上,包括腾讯、新浪、网易、淘宝等访问量巨大的网站。2012年2月和3月Netcraft对Web服务器的调查如表1-1所示,可以看出,Nginx的市场份额越来越大。表1-1 Netcraft对于Web服务器市场占有率前4位软件的调查(2012年2月和3月)[插图]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系统调用,这个系统调用可以高效地把硬盘中的数据发送到网络上(*不需要先把硬盘数据复制到用户态内存上再发送),这极大地减少了内核态与用户态数据间的复制动作。种种迹象都表明,Nginx以性能为王。2011年7月,Nginx正式成立公司,由Igor Sysoev担任CTO,立足于提供商业级的Web服务器。

nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。

优势

(1)更快这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应;另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。实际上,本书第三部分中大量的篇幅都是在说明Nginx是如何做到这两点的。

(2)高扩展性Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须在意其他。而且在HTTP模块中,还设计了HTTP过滤器模块:一个正常的HTTP模块在处理完请求后,会有一串HTTP过滤器模块对请求的结果进行再处理。这样,当我们开发一个新的HTTP模块时,不但可以使用诸如HTTP核心模块、events模块、log模块等不同层次或者不同类型的模块,还可以原封不动地复用大量已有的HTTP过滤器模块。这种低耦合度的优秀设计,造就了Nginx庞大的第三方模块,当然,公开的第三方模块也如官方发布的模块一样容易使用。Nginx的模块都是嵌入到二进制文件中执行的,无论官方发布的模块还是第三方模块都是如此。这使得第三方模块一样具备极其优秀的性能,充分利用Nginx的高并发特性,因此,许多高流量的网站都倾向于开发符合自己业务特性的定制模块。

(3)高可靠性高可靠性是我们选择Nginx的最基本条件,因为Nginx的可靠性是大家有目共睹的,很多家高流量网站都在核心服务器上大规模使用Nginx。Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;另外,官方提供的常用模块都非常稳定,每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。

(4)低内存消耗一般情况下,10000个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存,这是Nginx支持高并发连接的基础。

(5)单机支持10万以上的并发连接这是一个非常重要的特性!随着互联网的迅猛发展和互联网用户数量的成倍增长,各大公司、网站都需要应付海量并发请求,一个能够在峰值期顶住10万以上并发请求的Server,无疑会得到大家的青睐。理论上,Nginx支持的并发连接上限取决于内存,10万远未封顶。当然,能够及时地处理更多的并发请求,是与业务特点紧密相关的。

(6)热部署master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,即可以在7×24小时不间断服务的前提下,升级Nginx的可执行文件。当然,它也支持不停止服务就更新配置项、更换日志文件等功能。

Apache

性能方面,Apache在设计时使用了以“进程”为基础的结构。大家都知道,进程要比线程消耗更多的系统开支,这导致Apache在多处理器环境中性能有所下降。因此,在对一个Apache Web站点进行扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

IIS

安装、模块、基础配置语法。(Linux编译安装, 预编译二进制包安装,windows平台安装,openresty介绍)

Mac安装nginx
- 安装
brew install nginx
- 启动nginx
sudo nginx
- 路径
/usr/local/etc/nginx
Linux安装
GCC编译器
yum install -y gcc
yum install -y gcc-c++

PCRE库
yum install -y pcre pcre-devel

zlib库
yum install -y zlib zlib-devel

openssl开发库
yum install -y openssl openssl-devel

日志输出、默认配置模块

nginx对请求的处理,访问控制模块的使用

2

评论区