背景:因为特殊要求,之前是本系统A接收请求自己处理,现在改成转发给其他系统B处理,自己本身不处理,请求的接口是post类型;A是https的,B是http的。 问题过程:
1、Nginx转发
开始想到的是用Nginx转发,不用写代码,直接配置。先是用rewrite命令,这个不支持post,一般是用于网页链接的get转发;然后找到return 308重定向,request请求的body是带上了,但是header漏了,而且查看log发现还报错:原来是https的不能转http,直接就放弃ng了。
2、Gateway
gateway之前的路由方式是discovery通配的,现在只能改成每个服务一个id单独配置。 截取部分:
- id: other_api_route
uri: http://ip:80/demogateway
order: 1
predicates:
- Path=/other-api/**
- id: demo_route
uri: lb://mail-demo
order: 2
predicates:
- Path=/mail-demo/**
filters:
- StripPrefix=1
...其他路由...
验证发现,如果uri转发的不是http,而是https,需要处理证书,当然简单点可以忽略证书。
太久没有写文章了,就简单的记录一下。