一、Nginx简介
1.1 Nginx简介
- Nginx (engine x) 是一个轻量级的、高性能的、基于HTTP的、反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
- Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,使用C语言表写。
- 国内大型站点,如百度、京东、新浪、腾讯、网易等都是用的Nginx。
1.2 代理服务器
- 代理服务器根据其代理对象不同,可以分为正向代理和反向代理。这里的“正”与“反”
是站在客户端的角度来说的。
1.2.1 正向代理
- 正向代理是对客户端的代理。客户端c想要从服务端S获取资源,但由于某些原因不能直接访问服务端,而是通过另外一台主机Р向服务端发送请求。当服务端处理完毕请求后,将响应发送给主机P,主机Р在接收到来自服务端的响应后,将响应又转给了客户端c。此时的主机P,就称为客户端C的正向代理服务器。
- 客户端在使用正向代理服务器时是知道其要访问的目标服务器的地址等信息的。
- 正向代理服务器是服务器的用户(客户端)架设的主机,与服务端无关,正向代理服务器的出现,使服务端根本就不知道真正客户端的存在。
正向代理服务器可以做到
- 隐藏:向服务端隐藏真正的访问者
- 翻墙
- 提速
- 缓存
- 授权
1.2.2 反向代理
- 反向代理 Reverse Proxy,是对服务端的代理。单从功能示意图上看,好像反向代理与正向代理没有区别,都是架设在客户端与服务端间的主机。但,反向代理是服务端架设的主机,与客户端无关。客户端认为其访问的是服务器本身,但其真正访问是反向代理服务器。
- 客户端在使用反向代理服务器时,根本就不知道自己真正要访问的目标服务器的地址及信息,所有的访问都是通过代理完成的。这点上是与正向代理服务器不同的。
目的:
-
保护隐藏
保护隐藏客户端只能访问到反向代理服务器,而真正的服务器客户端是不能直接访问的。这样就起到了保护和隐藏真正服务器的目的。 -
负载均衡
当客户端访问较集中时,会产生高并发问题。对于分布式服务器系统,反向代理可以根据请求功能的不同,将请求转发给相应的服务器;对于集群服务器系统,反向代理可以根据各服务器的负载量,将请求转发给负载较轻的服务器。而这些,都是起到了负载均衡的效果。 -
动静分离
- 动态资源是指,需要经过服务端代码运算后才可形成的资源。例如,JSP页面就是动态资源,因为页面中的数据是由服务端从DB中查询出来的。
- 静态资源是指不会发生改变的资源,例如,页面中的图片、音频、视频、CSS、JS 等资源文件,均为静态资源。
- 反向代理服务器直接将动态资源请求与静态资源请求进行了分离,降低了应用服务器的压力。
-
数据缓存
反向代理也具有数据缓存的功能。例如,将客户端请求的静态资源缓存到代理服务器中。当再有相同资源请求时,直接从代理服务器中获取该资源即可。
二、集群服务搭建,负载均衡配置
2.1 集群服务搭建
- 在服务器配置多个tomact并启动,注意在
.../apache-tomcat-8.5.72.tar/conf/server.xml
文件中修改tomact的端口,防止tomact的端口号冲突
2.2 配置Nginx的负载均衡
- 在nginx中配置负载均衡,引入之前搭建的集群服务。这里没有设置轮训方式,默认为轮训
- 配置代理
三、动静分离
将动态资源和静态资源分开
修改/usr/local/nginx/conf/nginx.conf
配置
在配置文件中的server中
-
静态资源
-
动态资源,也就是及代理请求
之后重启nginx
在服务器1和服务器2上分别上传一个test.jsp
,在Nginx的静态资源文件里上传图片,然后访问:
可以访问访问到图片,但是我们直接访问服务器是加载不出来图片的: