0

请问大家 go micro 怎么禁止 api 网关访问到 有些rpc 的接口 ,有些只作内部调用不让api网关访问到

狗贱 117
2019-05-16 提问
4 个回答
0

已采纳

参考官方设计的一个3层的服务架构:

micro api: (localhost:8080) - http访问入口
api service: (go.micro.api.greeter) - 对外暴露的API服务
backend service: (go.micro.srv.greeter) - 内网的后台服务
完整示例可以参考:examples/greeter

# 下载示例
git clone https://github.com/micro/examples

# 运行服务
go run examples/greeter/srv/main.go

# 运行api
go run examples/greeter/api/api.go

# 启动micro api
micro api

所有server都不可访问,通过API服务聚合server,选择你要暴露的API

0
  • micro api 这层限制,有参数 --server_address 可以设定地址的

    • 默认就是 127.0.0.1:8080 只能本机访问
    • 改成 0.0.0.0:8080,所有都能访问
    • 改成比如 192.168..,只能内部局域网访问
  • 程序内部逻辑控制,代码里判断 ip 来源,做逻辑处理
  • 如果 go 外面有统一的网关,或者加了 web server proxy 的话,可以在这层做判断,比如加了 nginx proxy 的话
0

@dryyun 首先感谢你的回答,我现在有个疑惑, micro api是对外的,它能访问对内的一切资源;2 在程序里作判断的话是不是每个微服务都要写一个公共的方法来判断?
我现在有个想法就是自己写一个restful API网关转发,不用MICRO API作转发, 把需要进行登录验证的和权限模块在这层做,把微服务在局域网类开发裸奔。

不知道是不是我没有理解 MICRO 的用法?
0

真的不建议使用Micro提供API,局限性不说,而且不友好。
restful API网关转发多好,这么多middleware,可以做你想做的任何事情。
rpc就只让它做它自己的事情去吧。

撰写答案

推广链接