Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
50 lines (29 sloc) 3.96 KB

Java 程序员应掌握的 Nginx 实战应用(一)

一、常用的 Web 服务器介绍

服务器介绍

Web 服务器分为静态服务器和动态服务器,静态服务器就是处理静态资源的,比如 HTML、CSS、JS,常用的静态服务器有 Apache、Nginx;动态服务器就是处理动态请求的,比如 JSP,Servlet 等,常用的有 Tomcat、Weblogic。

Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,能够支持 5 万个并发连接,内存、CPU 消耗非常低,是基于七层协议的服务。

反向代理介绍

我们平时说的代理指的是代理客户端,这个是正向代理,反向代理指的是代理服务端。

我们作为用户想访问一个服务资源 URL,如果我们的浏览器直接打不开这个 URL,一般会通过 VPN 或者其他代理服务器中转,这种情况下的代理就是正向代理,也就是我们通常说的代理的意思。

而反向代理是指,作为服务资源提供方,内部有很多服务器,这些服务器不能全部暴露给第三方用户,因此需要在内部服务器的前面加一个代理服务器,用户访问的是代理服务的 IP,而不知道具体访问的是服务端的哪台机器,这种情况就是反向代理,指的是代理服务端。

二、Nginx 在分布式架构中的作用

分布式架构的演进

一个网站的初期,访问的流量比较小,选用的架构可能就是用户通过域名访问,经过域名解析(DNS 服务器),拿到后端服务器的 IP 地址,直接访问到这个 IP 所对应的 Tomcat 服务器,这是最简单的一个网站架构。

随着用户流量的增大,一台 Tomcat 服务器无法满足用户的请求,因此人们会想到 2 个办法:

升级这台服务器更换更强大的硬件,这就是垂直扩展; 增加新的服务器来分担前端流量,这就是水平扩展。 垂直扩展的方式就是对一台服务器不断加强硬件,但是服务器的可扩展内存会有上限,总会达到瓶颈,而且成本比较高,因此人们一般会选择水平扩展。一台不够再加一台,不行再加一台......

为了应对流量的增加,不断地增加后端服务器的数量,那么服务器的 IP 会越来越多,通过 DNS 服务器管理这些服务器 IP 带来了新的问题:

后端的某台机器宕机后,DNS 服务器不知道该机器宕机,仍然解析到了这个 IP,如果用户访问到了这个宕机的 IP,那么系统无法为用户提供服务; DNS 服务器配置新的 IP 后,它不会立即生效,那么在它生效的这个时间段,新加的服务器不会为用户提供服务。 反向代理和负载均衡服务器可以很好地解决上面的问题。

用了反向代理服务器后,网站的架构就进一步演进,变成了用户通过域名访问,DNS 服务器返回反向代理服务器的 IP,反向代理服务器根据被代理服务器的 IP 配置和负载均衡的策略,转发用户的请求到不同的后端服务器,后端服务器返回响应结果到反向代理服务器,反向代理服务器返回结果给用户。

反向代理服务器因为只转发用户的请求而不做具体处理,因此它的性能比应用服务器强大。

随着流量的继续增大,单台反向代理服务器成为了瓶颈,我们就会对其做集群,解决高性能的问题,对其做主备解决高可用的问题。

至此,一个网站的分布式架构的演进过程介绍完了。

Nginx 在分布式架构的作用 通过上面的架构演进介绍,我们知道分布式架构中最重要的思路就是水平扩展,水平扩展最重要的一个环节就是反向代理和负载均衡。

Nginx 就是一个高性能的反向代理和负载均衡服务器,它可以支持 5 万的并发访问,同时它可以做动静分离,可以解决跨域访问和防盗链的问题。

文章永久链接地址:

https://github.com/java-aodeng/hope/tree/master/nginx/nginx1.md

You can’t perform that action at this time.