作者:蔷薇Nina
原文链接:
https://www.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 的官网查看具体的信息:
那么反向代理具体是通过什么样的方式实现的分布式的集群操作呢,我们先看一个示意图(我把服务器和反向代理框在一块,同属于一个环境,后面我有介绍):
-
保证内网的安全,通常将反向代理作为公网访问地址,Web 服务器是内网。
-
负载均衡,通过反向代理服务器来优化网站的负载。
项目场景
具体的拓扑图如下:
截了一张图来说明正向代理和反向代理二者之间的区别,如下图:
-
在正向代理中,Proxy 和 Client 同属于一个 LAN(图中方框内),隐藏了客户端信息。
-
在反向代理中,Proxy 和 Server 同属于一个 LAN(图中方框内),隐藏了服务端信息。
负载均衡
更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。
Web 服务器对比
更多有趣有用文章
手把手教你,菜鸟也能用Python写一个2048游戏
强烈推荐,用Python轻松打造定制款《植物大战僵尸》
小白都能看懂,用Python来实现一个区块链,就这么简单
天下武功为快不破,戏说Python与Go高并发争锋!
建议看一下,零基础学Python都想问的6个问题,老司机给你两千字解答
千人学习群:
小密圈的趣味实战-微信主题
小密圈人气很高的两个实战项目
好文章,我 在看
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 哇塞!提速72倍,在Python里面调用Golang函数05/22
- ♥ python没有代表什么09/18
- ♥ 坐地铁,就能学会的100个 “非常有用” 的Python技巧【一】08/10
- ♥ 60 个相见恨晚的神器工具04/30
- ♥ python如何随机选择几个字符串并输出08/23
- ♥ Python 初学者必备的常用内置函数04/28
内容反馈