一、nginx能做的事
1.反向代理:服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在,简单来说就是服务器无法被外部网络进行访问,必须通过代理
2.动静分离:利用反向代理功能将所有动态资源的请求交给应用服务器,而静态资源的请求(图片,js,css)等则由nginx返回到浏览器,以此来减轻服务器压力
3.负载均衡:当一台服务器短时间内被多个用户访问时,有可能会因为压力过大而宕机,这个时候我们就需要用到负载均衡。建立服务器集群,用户先访问中间调度服务器,然后根据每个服务器的配置以及空闲情况来分配用户访问到哪台服务器上,分担服务器压力,让每个服务器的压力趋于平衡 一般情况下负载均衡搭配反向代理使用,先访问代理服务器根据情况分配用户
关于nginx的安装可参考https://www.cnblogs.com/pandawan/p/10713961.html
二、简单实现
1.准备了两台服务器,一台是192.168.15.10,另一台是192.168.15.11,为了更明显页面改成如下内容
2.反向代理的实现
通过修改nginx的配置文件实现,打开/nginx/conf/nginx.conf 之后新增下图属性
保存重启nginx之后,访问192.168.15.10,出现的页面是这个
可以看到访问的是服务器1的nginx,但是页面是第二台服务器的页面,配置成功
3.负载均衡的几种方式以及简单实现
1.轮询(默认):每个请求按时间顺序分配到不同的后端服务器,如果服务器down掉,能自动剔除,修改nginx配置文件如下
按顺序访问服务器,每刷新一次就会更换一个服务器,关闭其中一台服务器上的Tomcat后,重复刷新依旧是同一台服务器
2.加权轮询法:简单来说按照自己设定的几率将请求分配到服务器上,主要用于服务器性能分布不均的情况,修改如下
修改完之后第一次访问是10的地址,随后刷新11次,有8次是10的地址,接近于11的3倍
3.IP哈希法:每个请求按访问ip的hash结果分配,可以将每个用户固定到一台服务器上,使用与nginx配置修改如下
4.fair:按后端服务器的响应时间来分配请求,响应时间快的优先分配,nginx配置修改如下
5.URL哈希:按访问URL哈希结果分配,让每个URL分配到同一台服务器上,适用于服务器缓存。例如有三台服务器A,B,C下载存储服务器D上的图片资源,用户被分配到A上,A访问D下载返回给用户。将图片资源缓存一周,在一周内同一个URL资源请求可以定向到A,避免访问到其他服务器上,令其他服务器再次访问D服务器并下载图片资源,造成不必要的带宽,nginx配置修改如下
6.关于upstream的参数
down:当前server不参与负载
weight=2:负载权重为2
max_fails和fail_timeout:#服务器X秒内出现请求失败X次,nginx会认为这台服务器已经宕机,X秒内不会再次进行请求,将请求转发到其他正常机器,时间结束后再次请求
backup;#其他非backup宕机或者忙的时候,会请求这台机器(热备机)