nginx动态转发到upstream

背景

最近在使用prometheus做监控,应用程序也集成了prometheus,因此有很多的数据采集是跟随应用程序走的,导致采集的地址有很多,且都是非公开的访问端口,因此prometheus没法直接从应用程序采集数据

目标

解决prometheus从应用程序采集指标问题

方案

内网端口不直接对外暴露,这个是不可以改的,因此只能通过可以暴露的一些端口来做转发

在nginx上这种方式是可以实现的,我们定义了一个转发的路径/dispatch,需要动态转发的都走到这里

然后定义了两个参数up和path:

up表示具体的服务提供方ip+端口

path表示具体的请求path

location /dispatch {        allow 192.168.0.0/16; # 只允许内网访问        deny all;        set_unescape_uri $dispatch_up $arg_up;        set_unescape_uri $dispatch_path $arg_path;        rewrite (.*)$ $dispatch_path break;        proxy_set_header path $dispatch_path;        proxy_set_header upstream $dispatch_up;        proxy_pass http://$dispatch_up;}

因此如果访问http://mydomain.com/dispatch?path=/test/hello\&up=127.0.0.1:8080

实际会转发到http://127.0.0.1:8080/test/hello

results matching ""

    No results matching ""

    本文使用 文章同步助手 同步

    最后编辑于
    ©著作权归作者所有,转载或内容合作请联系作者
    【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
    平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

    相关阅读更多精彩内容

    友情链接更多精彩内容