You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Nginx代理添加自定义HTTP头采集Prometheus指标?

问题描述

需要从要求携带自定义HTTP头x-service-token的端点采集Prometheus指标,但Prometheus仅支持Authorization头,没有提供自定义HTTP头采集的选项。

已有Nginx正向代理方案

有用户分享了通过Nginx搭建正向代理的解决思路:

为方便其他用户参考,我提供一个可用的Nginx配置(我并非Nginx专家,还请见谅!;)
我通过Docker运行该代理,以下是监听9191端口的Nginx正向代理配置文件:

http {
  map $request $targetport {
    ~^GET\ http://.*:([^/]*)/ "$1";
  }
  server {
    listen 0.0.0.0:9191;
    location / {
      proxy_redirect off;
      proxy_set_header NEW-HEADER-HERE "VALUE";
      proxy_pass  $scheme://$host:$targetport$request_uri;
    }
  }
}
events {
}

运行透明正向代理的命令:
docker run -d --name=nginx --net=host -v /path/to/nginx.conf:/etc/nginx/nginx.conf:ro nginx
在Prometheus任务(或全局配置)中添加proxy_url字段:

- job_name: 'somejob'
    metrics_path: '/something/here'
    proxy_url: 'http://proxyip:9191'
    scheme: 'http'
    static_configs:
    - targets:
      - '10.1.3.31:2004'
      - '10.1.3.31:2005'

原作者:@sra

实际配置遇到的问题

  • 未使用host网络,改用host.docker.internal替代localhost时,Nginx无法连接目标端点,报错信息如下:
    nginx               | 172.26.0.4 - - [31/Oct/2022:16:07:38 +0000] "GET http://host.docker.internal:8080/actuator/prometheus HTTP/1.1" 502 157 "-" "Prometheus/2.39.1"
    
  • 该方案要求将API密钥硬编码在Nginx配置文件中,存在意外提交到代码仓库的安全风险。

此外,相关的GitHub问题已被锁定无法跟进提问,StackOverflow上的两个同类问题也未给出有效解决方案。


内容的提问来源于stack exchange,提问作者aSemy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:45:40