springCloud微服务与nginx⽹关代理整合思路
研究了好久的springCloud微服务架构,在这⾥整理总结⼀下,做个梳理和备忘。
nginx鉴权网关
这⾥只记录⼀些个⼈认为⽐较重要,但是⽹上基本没有什么明确答案的问题。像什么注册中⼼什么的就不总结了,⽹上⼀⼤堆。
先从⽹关开始说吧,⽹关也有很多东西,这⾥先说⼀下⽹关和nginx的整合。
1、nginx在这⾥的作⽤:
在这个⽅案中,通过nginx可以做前后端分离,静态化,对⽹关做⾼可⽤和负载均衡。提供统⼀的404,500页⾯。
2、⽹关zuul
zuul本⾝也是⼀个反向代理,也可以对其管理的微服务做负载均衡。同样,zuul也可以做⼀些统⼀的处理,可以做熔断,统⼀的错误处理,统⼀的,还可以做微服务的聚合处理。这些细节就先不说了。
好了,两者的职责确⽴完毕,开始看看如何去做整合。
⼀、思路
假设:nginx服务器地址为192.168.2.104
zuul的地址为192.168.160.66,端⼝号为5555
oauth2认证服务器微服务地址为192.168.2.104,端⼝号为9999,服务名为sso
zuul为oauth2认证服务器设置统⼀⼊⼝为api-auth
我们希望把192.168.2.104:9999/sso/code/image的地址代理到192.168.2.104/api-auth/code/image上并且经过zuul
做法为:nginx将zuul设置的代理地址(api-auth)转向到zuul所在的实际地址(192.168.160.66)和端⼝(9999)上。
过程是这样的:
1、客户端访问192.168.2.104/api-auth/code/image
2、通过nginx转向到192.168.160.66:5555/api-auth/code/image
3、通过zuul转向到192.168.2.104:9999/sso/code/image
最后,出于安全考虑,获取令牌的请求192.168.2.104/api-auth/oauth/token不能通过⽹关,只能⽤如下请求
192.168.2.104/sso/oauth/token
⼆、配置
1、nginx配置
[html]
1. upstream  zuul {
2.        server 192.168.160.66:5555;
3.    }
[html]
1. location /api-auth/ {
2.            proxy_pass zuul;
3.        }
2、zuul配置
[html]
1. zuul:
2.  routes:
3.      auth-server:
4.      path: /api-auth/**
5.      url: 192.168.2.104:9999/sso/
auth-server这个名字可以随便取。path相当于nginx的location,url为被代理的地址。
⽐如:我访问192.168.2.104:5555/api-auth/code/image,将被转向到192.168.2.104:9999/sso/code/ima
ge上。  如果需要做⾼可⽤和负载均衡,那么可以⽤ribbon.listOfSevers设置多个被代理的地址。
到此zuul+nginx的解决⽅案⼤体实现就差不多了,剩下的细节就不⼀⼀叙述了。
为了⽅便开发,可以把注册中⼼和⽹关等常⽤的服务通过docker镜像运⾏成docker容器。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。