使用反向代理解决请求跨域问题,以及如何利用请求参数配置一个动态反向代理
公司有一个“文档接口服务”,用来维护公司所有项目的接口文档。
现假定:
接口文档地址:http://192.168.1.100:8080/doc
项目接口地址:http://192.168.1.200:8090/api
接口文档和项目不在同一个服务器且端口都不相同,出现了跨域的问题,接口无法正常模拟。
ps:什么是跨域?当一个请求url的协议、域名(IP)、端口三者之间任意一个与当前页面url不同即为跨域。
在不改动接口服务代码的情况下,使用nginx反向代理来解决跨域,方式如下
具体配置如下:
- 此后我们就需要通过代理地址访问“接口文档服务”了:;
我们接口文档中原本的接口地址也需要做相应的修改
例: 现在要改为
此时我们的所有操作都在服务完成,跨域问题解决。
“接口文档服务”肯定不止维护一个项目的接口文档,如果还按照中进行配置,那么项目多了维护成本就很高,此时就考虑使用动态的方式去做。
配置如下:
比如:http://192.168.1.100:8081/doc?url=abc
就能获取到 判断是否有url参数,如果有则直接转发到url地址,如果没有则正常转发到“接口文档服务”
接口地址拼接(重点)
动态反向代理后,接口地址就需要两部分,