首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

nginx 反向代理和负载均衡策略实战案例

(给前端大全加星标,提升前端技能)

作者:glmapper

https://juejin.im/post/5adc425f518825670f7b6fc8

引言

先来看下nginx在web服务器排名上的趋势:

存在即合理,那为什么要使用nginx呢?这得看看nginx能帮我们做些什么。

首先,nginx能做反向代理【关于反向代理和正向代理此处不做说明了,感兴趣的小伙伴自行谷歌】;比方说,我想在本地使用 www.glmapper1.com 的域名去访问www.taobao.com。那么这个时候我们就可以通过nginx去实现。

再者,nginx能实现负载均衡,什么是负载均衡呢?就是说应用部署在不同的服务器上,但是通过统一的域名进入,nginx则对请求进行分发,将请求分发到不同的服务器上去处理,这样就可以有效的减轻了单台服务器的压力。

在上面这两种情况下,nginx服务器的作用都只是作为分发服务器,真正的内容,我们可以放在其他的服务器上,这样来,还能起到一层安全隔壁的作用,nginx作为隔离层。

解决跨域问题

同源:URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。

浏览器的同源策略:浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。从一个域上加载的脚本不允许访问另外一个域的文档属性。

因为nginx和tomcat不能共用同一端口,url一样,端口不同,这样就会有跨域问题。

PS:点到为止,这里本次测试没有涉及,就不妄自菲薄了!!!

配置文件解析

配置文件主要由四部分组成:

main(全区设置)

server(主机配置)

http(控制着nginx http处理的所有核心特性)

location(URL匹配特定位置设置)。

upstream(负载均衡服务器设置)

下面以默认的配置文件来说明下具体的配置文件属性含义:

反向代理实例

验证结果:

可以看到,我在浏览器中使用localhost打开了百度的首页…

负载均衡实例

下面主要验证最常用的三种负载策略。虚拟主机配置:

轮询策略

测试结果(通过端口号来区分当前访问):

权重策略

测试结果:总访问次数15次,根据上面的权重配置,两台机器的访问比重:2:13;满足预期!

ip hash策略

iphash 算法:ip是基本的点分十进制,将ip的前三个端作为参数加入hash函数。这样做的目的是保证ip地址前三位相同的用户经过hash计算将分配到相同的后端server。作者的这个考虑是极为可取的,因此ip地址前三位相同通常意味着来着同一个局域网或者相邻区域,使用相同的后端服务让nginx在一定程度上更具有一致性。

为什么说要解释下iphash,因为采坑了;和猪弟在进行这个策略测试时使用了5台机器来测试的,5台机器均在同一个局域网内【192.168.3.X】;测试时发现5台机器每次都路由到了同一个服务器上,一开始以为是配置问题,但是排查之后也排除了这个可能性。最后考虑到可能是对于同网段的ip做了特殊处理,验证之后确认了猜测。

其他负载均衡策略

这里因为需要安装三方插件,时间有限就不验证了,知悉即可!

重定向rewrite

验证思路:本地使用localhost:80端口进行访问,根据nginx的配置,如果重定向没有生效,则最后会停留在当前localhost:80这个路径,浏览器中的地址栏地址不会发生改变;如果生效了则地址栏地址变为localhost:8080;

通过验证,满足预期!

总结

本文先对nginx的作用和基本的配置做了简单说明;然后通过负载均衡的实例测试了不同负载均衡算法的具体应用反馈结果。帮助自己更加深刻的理解nginx服务器中的一些配置细节。感谢刘秘提供的helloworld程序【基于springboot的脚手架,有需要的可以联系他获取;还有就是刘秘是个男的…】

参考

http://nginx.org/

https://www.nginx.com/

http://www.sohu.com/a/161411719_324809

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190215B197VS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券