一、该问题的重现步骤是什么?
1. 这边服务器上面部署了cloud得基础服务,本地开发得时候,我不想起那些基础服务,只启动个biz ,然后前端得代码启动后都是默认请求localhost
2.
3.
二、你期待的结果是什么?实际看到的又是什么?
1. 本地开发cloud 上得项目时,只需要启动biz 项目,然后前端开发请求能够实现对接线上得基础服务,本地新开发得服务可以联调
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
你需要按照如下步骤操作:
1. 有一个前提,本地开发机与服务器的网络需要相互联通
2. 部署一个nacos,其网络与服务器、本地开发机互相联通
3. 在服务器部署cloud服务(gateway除外)后,注册到刚刚部署的nacos
4. 本地启动biz,将服务注册到nacos
5. 本地启动gateway,暴露出gateway的ip+端口
6. 前端针对gateway的ip+端口进行反向代理
7. 后续有请求来的时候,具体流程如下:用户访问前端->访问前端代理的gateway地址->gateway服务在nacos检索到注册的对应cloud服务地址->gateway内部机制进行调用->访问到对应的服务,将响应结果一层一层返回至前端
8. 有响应后,前后端就可以正常交互了
1. 第一个问题ping 通
2. ok
3. gateway 不启动?第三点不是很理解
4. 已注册
5. 服务器上门得gateway 不处理是吧? -- 这个不理解,5 开始就有点看不懂了
gateway不需要在服务器部署,只要本地启动就行,这样方便调试
暴露gateway的ip+端口意思就是保证端口开启,可以被前端反向代理联通
我现在还是昨天那个问题,cloud 服务器上部署了服务,然后关掉服务上gateway,并将其余服务的端口都开了, 本地启动了biz 项目里面demo 和 gateway 服务,然后现在前端 target 的路径是http://localhost , 启动后前端运行时报502,前端target 换成 http://我服务器的ip,现在成功,但是验证码接口200, 但是没有返回验证码?
感觉你对整个运行流程都没有理解,我现在总体说一下:
1. 后端微服务部署的情况下已经不区分是bladex还是bladex-biz了,因为打包后都是一个一个jar,与工程无关,他们已经可以看作是一个整体了
2. 服务注册到nacos后,会把自己的ip和端口同步注册,这样nacos就可以看到每个服务对应的ip和端口
3. 至于为什么不需要把网关部署在服务器,而要启动本地网关,这样做是为了方便本地调试
4. 本地网关启动后,只需要访问本地网关的地址+服务名,服务就会到nacos找到对应服务名的ip和端口,从而内部进行转发调用
5. 前端配置的反向地址应该是网关地址,这里启动了本地网关,那么反向代理的地址就是本地网关的IP+端口,并把需要反代的地址端口缩写作为一个apikey,比如我们这里改成了/api
6. 反向代理成功后,访问的仍然是前端自己的端口比如 http://localhost:1888
7. 我们访问http://localhost:1888代表访问了前端,又因为配置了反代,那么访问http://localhost:1888/api的时候就相当于访问到了后端的网关地址,所以你表面上看访问的是localhost,但实际已经转发到自己的网关地址了,你是没有必要把他改成服务器ip的
综上讲了这么多,已经把整个流程都讲完了,希望你能看明白,如果还不明白的话,那需要从头开始好好学习一下springcloud以及反向代理,不然是很难明白这一套流程的
好的好的,谢谢哈!
扫一扫访问 Blade技术社区 移动端