Nginx("engine x")是一个高性能的 HTTP 和反向代理商服务器,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。官方测试 nginx 能够支撑5万并发链接,并且 cpu、内存等资源消耗却非常低,并发能力强,运行非常稳固。
Nginx 是一款轻量级的Web 服务器/反向代理商服务器及电子邮件(IMAP/POP3)代理商服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoevr所开发,因它的稳固性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。中国大陆使用nginx网站客户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理商服务器对外进行服务。
功能:web 服务器、web reverse proxy、smtp reverse proxy
反向代理商产生的背景:
在计算机世界里,因为单个服务器的解决用户端(客户)请求能力有一个极限,当客户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的客户请求,这些服务器提供相同的服务,对于客户来说,根本感觉不到任何差别。
反向代理商服务的实现:
需要有一个负载均衡设施(即反向代理商服务器)来分发客户请求,将客户请求分发到空闲的服务器上。
服务器返回自己的服务到负载均衡设施。
负载均衡设施将服务器的服务返回客户。
那么问题来了,很多人这时会问什么是反向代理商?为什么叫反向代理商?什么是正向代理商?我们来举例说明
正向代理商:
例1:我要创业,需要一个亿作为启动资金,可惜我是白手起家,这时想起来我有个美国的好朋友,是比尔盖茨的好哥们,于是乎,我就托我朋友(代理商)去找比尔盖茨,让他资助我一个亿,就这样我拿到了一个亿启动资金。朋友在这里就是正向代理商的角色,他代我办了这件事,至于真正是谁借了钱,比尔盖茨是不知道的,这是关键点。
正向代理商的过程隐藏了真实的请求用户端,服务器不知道真实的用户端是谁,用户端请求的服务都被代理商服务器代替请求。我们常说的代理商也就是正向代理商,正向代理商代理商的是请求方,也就是用户端;比方我们要访问youtube,可是不能访问,只能先安装个翻墙软件代你去访问,通过翻墙软件才能访问,翻墙软件就叫作正向代理商。
翻墙软件就是正向代理商
正向代理商中,proxy和client同属一个LAN
反向代理商:
例2,以前,我去饭店吃饭,需要先到饭店,而后点好菜,坐等饭菜上桌,而后饱餐一顿,不亦乐乎。有了第三方订餐外卖平台(代理商),我就懒得动身前往饭店,用APP,先选好某个饭店,再点好菜,外卖小哥会送上门来。
因为某个品牌的饭店口碑特别好,食客络绎不绝涌入,第三方订餐电话也不绝于耳,但是限于饭店接待能力有限,无法提供及时服务,很多食客等得不耐烦了,纷纷铩羽而归,饭店老总看着煮熟的鸭子飞走了,心疼不已。痛定思痛,老总又成立了几个连锁饭店,形成一个集群,对外提供统一标准的菜品服务,这样食客既不需要等待,各连锁店都能高速运转起来,一举两得,并为此种运作模式起名为“反向代理商”(Reverse Proxy)(订餐平台也就是代理商和连锁店之间是合作关系,用户只管订餐不需要关注他们之间的合作关系,不需要见到店里的老板是谁,只和订餐平台小哥交互)。
反向代理商的过程隐藏了真实的服务器,用户不知道真正提供服务的人是谁,用户端请求的服务都被代理商服务器解决。反向代理商代理商的是响应方,也就是服务端;我们请求www.baidu.com时这www.baidu.com就是反向代理商服务器,真实提供服务的服务器有很多台,反向代理商服务器会把我们的请求分转发到真实提供服务的各台服务器。Nginx就是性能非常好的反向代理商服务器,用来做负载均衡。
访问www.baidu.com是正向代理商的过程
反向代理商中,proxy和server同属一个LAN
正向代理商和反向代理商比照示用意
两者的区别在于代理商的对象不一样:正向代理商代理商的对象是用户端,反向代理商代理商的对象是服务端
正向代理商中,proxy和client同属一个LAN,对server透明;
反向代理商中,proxy和server同属一个LAN,对client透明。
知识扩展1:
没有使用LVS时,用户端请求直接到反向代理商Nginx,Nginx分发到各个服务器,服务端响应再由Ngnix返回给用户端,这样请求和响应都经过Ngnix的模式使其性能降低,这时用LVS+Nginx处理。
LVS+Nginx,用户端请求先由LVS接收,分发给Nginx,再由Nginx转发给服务器,LVS有三种方式:NAT模式(Network Address Translation)网络地址转换,DR模式(直接路由模式),IP隧道模式,路由方式使服务器响应不经过LVS,由Nginx直接返回给用户端。
知识扩展2:
HTTP Server和Application Server的区别和联络
Apache/nignx是静态服务器(HTTP Server):
Nginx优点:负载均衡、反向代理商、解决静态文件优势。nginx解决静态请求的速度高于apache;
Apache优点:相对于Tomcat服务器来说解决静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理商、负载均衡等功能
HTTP Server(Nginx/Apache)常用做静态内容服务和代理商服务器,将外来请求转发给后面的应用服务(tomcat,jboss,jetty等)。
应用服务器(tomcat/jboss/jetty)是动态服务器(Application Server):
应用服务器Application Server,则是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java,若是Ruby/Python 等其余语言开发的应用也无法直接运行在 Tomcat 上)。
但是事无绝对,为了方便,应用服务器(如tomcat)往往也会集成 HTTP Server 的功能,nginx也可以通过板块开发来提供应用功能,只是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到用户端。
常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat
常用商业集群硬件有:F5,Netscaler,Radware,A10等
PC中文 Steam 大富翁11 Richman 11 国区激活码 CDKey 大富翁十一 大富翁10 正版大富翁游戏 电脑版
【骑砍中文站】骑马与砍杀 战团 正版 Steam CDKEY/16位序列号/激活码 23MOD典藏版
Steam 双点校园 Two Point Campus 双点大学 双点学校 太空学院DLC校园幽灵国区cdkey 中文正版激活码
PC中文正版 steam平台 国区 游戏 城市天际线 Cities Skylines 全DLC 工业 机场 都市天际线 激活码 兑换码
Steam游戏 霍格沃茨之遗 Hogwarts Legacy 霍格沃茨遗产 PC中文正版 霍格沃兹之遗 激活码KEY 角色扮演
PC中文正版steam 双点医院 Two Point Hospital 国区激活码 cdkey 正版游戏