看完这篇,可以随意玩转Nginx
共 4498字,需浏览 9分钟
·
2021-03-04 17:49
作者 | 蔷薇Nina
来源丨cnblogs.com/wcwnina/p/8728391.html
想必大家一定听说过Nginx,若没听说过它,那么一定听过它的"同行"Apache 吧!
Nginx 的产生
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 火了:
Nginx 使用基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接。
高度的模块化和自由软件许可证使得第三方模块层出不穷(这是个开源的时代啊)。
Nginx 是一个跨平台服务器,可以运行在 Linux、Windows、FreeBSD、Solaris、AIX、Mac OS 等操作系统上。
这些优秀的设计带来的极大的稳定性。
Nginx 的用武之地
来看个示意图(我把客户端和正向代理框在一块,同属于一个环境,后面我有介绍):
如下图:
访问原来无法访问的资源,如 Google。
可以做缓存,加速访问资源。
对客户端访问授权,上网进行认证。
代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息。
反向代理
明白了什么是正向代理,我们继续看关于反向代理的处理方式,举例如我国的某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了。
有兴趣的童鞋可以访问 Tengine 的官网查看具体的信息:
http://tengine.taobao.org/
那么反向代理具体是通过什么样的方式实现的分布式的集群操作呢,我们先看一个示意图(我把服务器和反向代理框在一块,同属于一个环境,后面我有介绍):
保证内网的安全,通常将反向代理作为公网访问地址,Web 服务器是内网。
负载均衡,通过反向代理服务器来优化网站的负载。
项目场景
具体的拓扑图如下:
截了一张图来说明正向代理和反向代理二者之间的区别,如下图:
在正向代理中,Proxy 和 Client 同属于一个 LAN(图中方框内),隐藏了客户端信息。
在反向代理中,Proxy 和 Server 同属于一个 LAN(图中方框内),隐藏了服务端信息。
更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。
Web 服务器对比
推荐阅读:
IDEA 永久注册码来了!!! 一个非常好的行为验证码Java开源项目! Google 开源的依赖注入库,比 Spring 更小更快! GitHub 近两万 Star,无需编码,可一键生成前后端代码 Spring Boot 中引入 MyBatisPlus 的常规流程 免费版的 IDEA 为啥不能使用 Tomcat ? 给新手的 11 个 Docker 免费上手项目
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。 获取方式:关注公众号并回复 java 领取,更多内容陆续奉上。 明天见(。・ω・。)ノ♡