美文网首页
Nginx转发+反向代理实现跨域接口转发

Nginx转发+反向代理实现跨域接口转发

作者: 键盘上的码农 | 来源:发表于2020-03-27 14:22 被阅读0次

    最近工作遇上业务交接不彻底还有一些乱七八糟原因,导致我需要将几个接口的请求转发到新团队负责的域名下。

    参考文档:

    https://blog.csdn.net/yeguxin/article/details/94020476

    https://liguangming.com/nginx-return-tips

    https://segmentfault.com/a/1190000018163817

    主要是为了记录自己工作中解决的一些问题,所以笔记就简单一些,涉及到工作的一些具体数据就不记录了

    原域名:soa.api.local

    目标域名:newsoa.api.local

    方法名:functionName

    第一版:

    出于偷懒的方式,直接选择return进行跳转

    return 200 $scheme://newsoa.api.local$request_uri;

    结果通过Http请求返回的是字符串

    "http://newsoa.api.local/functionName?body={"id":770080,"bid":9}&param1=param1&param2=param2"

    第二版:

    使用rewrite进行重定向

    rewrite ^(.*)$ http://newsoa.api.local$1 break;

    但是有点问题,在浏览器中可以看到跳转到新的域名了,但是打开开发者工具会看到有两次请求,第一次是对原域名soa.api.local的请求,返回的HttpCode为302。第二次请求为重定向后的请求。

    所以如果客户端跟踪重定向,那根本就获取不到第二次请求的数据。

    第三版

    使用rewrite和反向代理实现

    location /functionName{

        rewrite ^/functionName/(.*)$ $request_uri break;

        proxy_pass http://newsoa.api.local; 

    }

    终于达到我要的效果了,客户端能保持当前链接不变的情况下获取到重定向后的数据。

    相关文章

      网友评论

          本文标题:Nginx转发+反向代理实现跨域接口转发

          本文链接:https://www.haomeiwen.com/subject/frtluhtx.html