AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1168500
Accepted
Fausto Branco
Fausto Branco
Asked: 2024-12-04 21:32:27 +0800 CST2024-12-04 21:32:27 +0800 CST 2024-12-04 21:32:27 +0800 CST

HAProxy - 保留 URL 中的路径 - acl

  • 772

全部。

我有以下配置文件:

frontend devopsdb
  bind    *:8080
  acl grafana_path path_beg /grafana/
  use_backend back_grafana if grafana_path 

backend back_grafana
  server grafana-dev 10.152.183.155:80 

我需要的是,当我访问 URL(172.21.10.76 是我的测试 VM 和 HAProxy 所在的位置):http://172.21.10.76 :8080/grafana/ 时,它会重定向到 grafana POD:10.152.183.155:80

到目前为止一切顺利,它起作用了。

但是一旦重定向,路径 /grafana/ 就会从 URL 中消失,这就是 HAProxy 停止重定向的原因... - http://172.21.10.76:8080/login

是否可以通过 HAProxy 以某种方式保留 /grafana/?

另一个 POD /prometheus/ 也会发生同样的情况

reverse-proxy
  • 1 1 个回答
  • 22 Views

1 个回答

  • Voted
  1. Best Answer
    larsks
    2024-12-05T01:24:34+08:002024-12-05T01:24:34+08:00

    这里的问题是你的后端(grafana)对路径前缀一无所知,所以当它生成 url 时,它们将相对于/(so /login、、、/api等等)。

    您需要告诉 grafana 它托管在 以外的路径上。您可以使用和配置设置/来执行此操作(记录在“在反向代理后运行 Grafana ”中)。root_urlserve_from_subpath

    从撰写文件运行 grafana,可能看起来像这样:

    volumes:
      grafana-data:
    
    services:
      haproxy:
        image: docker.io/haproxy:lts
        volumes:
          - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
        ports:
        - "8888:8080"
    
      grafana:
        image: docker.io/grafana/grafana:11.3.1
        volumes:
        - "grafana-data:/var/lib/grafana"
        environment:
          GF_SERVER_DOMAIN: localhost
          GF_SERVER_ROOT_URL: "%(protocol)s://%(domain)s:%(http_port)s/grafana/"
          GF_SERVER_SERVE_FROM_SUB_PATH: "true"
    

    或者,您可以在grafana.ini文件中配置一些内容:

    [server]
    domain = localhost
    root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/
    serve_from_sub_path = true
    

    从文档来看,我认为serve_from_subpath这没有必要,但如果没有它,我最终会得到一个重定向循环。

    • 2

相关问题

  • 反向代理设备[关闭]

  • 清漆配置仅缓存未登录用户

  • Varnish 缓存如何处理不同的域?

  • Varnish 与其他反向代理

  • 内省 Varnish 的工具

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve