欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通过Openresty提取具体URI代理到指定BackendServer以解决CORS问题 OpenrestyCORSLuaURI 

程序员文章站 2024-01-30 12:14:46
...
通过Openresty提取具体URI,代理到指定BackendServer,以解决CORS问题,

一、问题场景

Browser请求https//biz4h5.company.com/xxx/yyy

而biz4h5.company.com要访问前后台分离的后台接口,https//biz4api.company.com/aaa/bbb

如果biz4h5.company.com和biz4api.company.com的解析ip不同,会导致CORS问题,关于CORS

的具体产生,可参考本人另一篇文章。

注意:CORS三要素,protocol,ip,port有一者不同,就会导致CORS

通过biz4h5.company.com所在的Openresty,统一代理到后台节点,改为如下方式:

https//biz4h5.company.com/xxx/yyy =>访问H5资源

https//biz4h5.company.com/backendapi/aaa/bbb =>访问后台接

口,https//biz4api.company.com/aaa/bbb



二、样例代码如下:

location / {
            proxy_pass http://yourbackendserver;

          if ( $request_uri ~* ^\/backendapi\/(.*) ) {
              content_by_lua '
                local raw_uri = ngx.var.uri
                local sent_uri = string.gsub(raw_uri, "(/%w+)", "", 1)
                ngx.req.set_header("host", "biz.company.com")
                ngx.req.set_uri(sent_uri)
                ngx.exec("@gateway")
            ';
          }

location @gateway{
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header remote_addr $remote_addr;
            proxy_pass  https://biz.company.com:5443;
        }
# the following codes have been escaped
}


【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:

通过Openresty提取具体URI代理到指定BackendServer以解决CORS问题
            
    
    
        OpenrestyCORSLuaURI