面试官 | Nginx 是什么?有什么作用?
Posted java那些事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试官 | Nginx 是什么?有什么作用?相关的知识,希望对你有一定的参考价值。
作者 | 蔷薇Nina
来源 | cnblogs.com/wcwnina/p/8728391.html
nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议提供各种网络服务。
然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个 Web 服务器有着各自鲜明的特点。
Apache 的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。
它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。
它不支持高并发的服务器。在 Apache 上运行数以万计的并发访问,会导致服务器消耗大量内存。
操作系统对其进行进程或线程间的切换也消耗了大量的 CPU 资源,导致 HTTP 请求的平均响应速度降低。
这些都决定了 Apache 不可能成为高性能 Web 服务器,轻量级高并发服务器 Nginx 就应运而生了。
俄罗斯的工程师 Igor Sysoev,他在为 Rambler Media 工作期间,使用 C 语言开发了 Nginx。
Nginx 作为 Web 服务器一直为 Rambler Media 提供出色而又稳定的服务。然后呢,Igor Sysoev 将 Nginx 代码开源,并且赋予自由软件许可证。
由于:
Nginx 使用基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接。
高度的模块化和自由软件许可证使得第三方模块层出不穷(这是个开源的时代啊)。
Nginx 是一个跨平台服务器,可以运行在 Linux、Windows、FreeBSD、Solaris、AIX、Mac OS 等操作系统上。
这些优秀的设计带来的极大的稳定性。
所以,Nginx 火了!
Nginx 的用武之地
Nginx 是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器;同时也是一个 IMAP、POP3、SMTP 代理服务器。
关于代理
被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店,客人到 adidas 专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是 adidas 厂家,目标角色就是用户。
来看个示意图(我把客户端和正向代理框在一块,同属于一个环境,后面我有介绍):
如下图:
然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
访问原来无法访问的资源,如 Google。
可以做缓存,加速访问资源。
对客户端访问授权,上网进行认证。
代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息。
反向代理
有兴趣的童鞋可以访问 Tengine 的官网查看具体的信息:
http://tengine.taobao.org/
那么反向代理具体是通过什么样的方式实现的分布式的集群操作呢,我们先看一个示意图(我把服务器和反向代理框在一块,同属于一个环境,后面我有介绍):
负载均衡,通过反向代理服务器来优化网站的负载。
项目场景
通常情况下,我们在实际项目操作时,正向代理和反向代理很有可能会存在同一个应用场景中,正向代理代理客户端的请求去访问目标服务器,目标服务器是一个反向单利服务器,反向代理了多台真实的业务处理服务器。
具体的拓扑图如下:
二者区别
截了一张图来说明正向代理和反向代理二者之间的区别,如下图:
在正向代理中,Proxy 和 Client 同属于一个 LAN(图中方框内),隐藏了客户端信息。
在反向代理中,Proxy 和 Server 同属于一个 LAN(图中方框内),隐藏了服务端信息。
负载均衡
更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。
Nginx 支持的负载均衡调度算法方式如下:
同样要注意 Nginx 默认不支持这种调度算法,要使用的话需要安装 Nginx 的 hash 软件包。
Web 服务器对比
几种常用 Web 服务器对比如下图:
▼
程序员内参 微信号: programmer0001
推荐理由: 在这里,我们分享程序员相关技术,职场生活,行业热点资讯。不定期还会分享IT趣文和趣图。这里属于我们程序员自己的生活,工作和娱乐空间。▼长按下方↓↓↓二维码识别关注
以上是关于面试官 | Nginx 是什么?有什么作用?的主要内容,如果未能解决你的问题,请参考以下文章
面试官:Nginx 是如何实现并发的?为什么 Nginx 不使用多线程?
面试官:什么是 EventLoop。你:一脸蒙蔽。看完这篇文章就懂了
面试官:什么是 YAML?和 Spring Boot 有什么关系?