美文网首页
openresty 合并请求

openresty 合并请求

作者: 国服最坑开发 | 来源:发表于2019-03-11 17:23 被阅读0次

功能要求

通过openresty, 把接入请求分别转向多个不同的接口服务.
从而实现一份数据提交到多台服务器.

主要代码实现如下:


http {
    include       mime.types;
    default_type  text/json;

    upstream tomcat {
        server localhost:9090;
    }

    upstream remote {
        server 10.1.1.10:80;
    }

    server {
        listen       8080;
        server_name  localhost;

        location /api_tomcat {
            rewrite ^/[^/]*/(.*) /$1 break;
            proxy_pass http://tomcat;
            proxy_set_header X-Forwarded-For $remote_addr;
        }

        location /api_remote {
            rewrite ^/[^/]*/(.*) /$1 break;
            proxy_pass http://remote;
            proxy_set_header X-Forwarded-For $remote_addr;
        }

        location = /v1/myAPI {
            content_by_lua '

                ngx.req.read_body()
                local arg = ngx.req.get_post_args()

                upstream_servers = {
                    {"/api_tomcat/v1/api", {args = arg, method = ngx.HTTP_POST}}
                }

                local smart_eu = "192.168.1.100"
                local smart_ca = "192.168.1.101"

                local headers=ngx.req.get_headers()
                local remote_ip=headers["X-REAL-IP"] or headers["X_FORWARDED_FOR"] or ngx.var.remote_addr or "0.0.0.0"

                -- 来自特定IP的请求才会提交到新的服务器
                if remote_ip == smart_ca or remote_ip == smart_ca then
                    upstream_servers[2] = {"/api_remote/v1/api", {args = arg, method = ngx.HTTP_POST}}
                end

                ngx.location.capture_multi(upstream_servers)

                ngx.say([[{"errorCode":"0","msg":"Succeed."}]])

                ngx.exit(200)
            ';
        }
    }
}

小坑笔记

由于openresty的请求是从nginx转发过来的, 所以在取请求ip的时候,不能直接用 ngx.var.remote_addr,而是从header里取

相关文章

  • openresty 合并请求

    功能要求 通过openresty, 把接入请求分别转向多个不同的接口服务.从而实现一份数据提交到多台服务器. 主要...

  • RxSwift(IV)

    网络请求合并 RxSwift 网络请求封装网络安全请求合并: 打印: 参考资料: 观察序列创建

  • SpringCloud-Hystrix【解决灾难性雪崩-请求合并

    本文我们来演示下Hystrix中解决雪崩效应的第三种方式请求合并的实现 Hystrix-请求合并 没有合并请求的场...

  • Openresty日志输出请求头 log lua

    使用Openresty作反向代理,有时候需要通过日志观察所有进来的请求信息,包括请求头、请求体等,可以通过以下方式...

  • 前端性能优化常用方法

    减少 HTTP 请求次数和请求大小:1、尽量合并 CSS 和 JS 文件,减少 HTTP 请求次数,把合并的代码压...

  • 请求合并

  • 前端性能优化

    前端性能优化 1.网络请求 DNS 查询优化 减少请求域名数量 减少请求数 合并文件 css 合并 js Spri...

  • 服务降级熔断 - 请求合并

    请求合并 前言 今日继续摸鱼Hystrix的请求合并部分,可能不如请求缓存分析的详细,但是我感觉足够表达实现原理了...

  • 前端性能测试项目实战

    优化技术 一、减少http请求 合并图片 合并js 合并css 去掉不必要的请求连接 缓存 图片技术尽可能使用PN...

  • 你用过的网站前端优化的技术有哪些?

    ① 浏览器访问优化: 减少HTTP请求数量:合并CSS、合并JavaScript、合并图片(CSS Sprite)...

网友评论

      本文标题:openresty 合并请求

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