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 / 问题 / 1019185
Accepted
Tilman Schmidt
Tilman Schmidt
Asked: 2020-05-30 06:29:46 +0800 CST2020-05-30 06:29:46 +0800 CST 2020-05-30 06:29:46 +0800 CST

带有来自 LocationMatch 的字符串替换的 Apache ProxyHTMLURLMap

  • 772

我正在尝试构建一个 Apache 反向代理,以使一组服务器可以通过单点访问进行访问。这些服务器都在端口 3000 上提供了一个 Web 管理界面,我打算将它们都显示为反向代理上的目录。接口包含本地链接,当然必须重写这些链接才能转到代理上正确服务器的子目录。

我可以为每个服务器单独使用这样的配置片段来实现所需的行为:

<Location /testadmin-warsaw/>
        ProxyPass http://warsaw.example.com:3000/
        ProxyPassReverse /
        ProxyHTMLEnable  On
        ProxyHTMLURLMap  / /testadmin-warsaw/ L
        RequestHeader    unset Accept-Encoding
</Location>

由于随着服务器的来来去去,这变得相当乏味且容易出错,因此我的目标是动态配置。根据 Apache 文档,以下应该可以工作:

<LocationMatch "^/testadmin-(?<OFFICENAME>\w+)/(.*)$">
        ProxyPassMatch   http://$1.example.com:3000/$2
        ProxyPassReverse /
        ProxyHTMLEnable  On
        ProxyHTMLInterp  On
        ProxyHTMLURLMap  / /testadmin-${env:MATCH_OFFICENAME|unknown}/ VL
        RequestHeader    unset Accept-Encoding
</LocationMatch>

<LocationMatch>将环境变量设置MATCH_OFFICENAME为目录的办公室名称部分,ProxyHTMLURLMap并将此名称插入到重写链接的适当位置。

但是,当我测试该配置时,最初指向的链接会/other/page.html被重写,/testadmin-unknown/other/page.html而不是/testadmin-warsaw/other/page.html按预期进行。换句话说,ProxyHTMLURLMap就像MATCH_OFFICENAME未设置环境变量一样。

如果我省略该env:部分并/testadmin-${MATCH_OFFICENAME}/按照 to 模式放置,Apache 会记录一个警告:“AH00111:未定义配置变量 ${MATCH_OFFICENAME}”。

我的错在哪里?

reverse-proxy mod-proxy apache-2.4
  • 1 1 个回答
  • 352 Views

1 个回答

  • Voted
  1. Best Answer
    Tilman Schmidt
    2020-06-05T00:39:59+08:002020-06-05T00:39:59+08:00

    没有 的语法env:是正确的。根据Apache Bug #58467AH00111,它产生的警告消息是虚假的。

    配置:

    <LocationMatch "^/testadmin-(?<OFFICENAME>\w+)/(.*)$">
            ProxyPassMatch   http://$1.example.com:3000/$2
            ProxyPassReverse /
            ProxyHTMLEnable  On
            ProxyHTMLInterp  On
            ProxyHTMLURLMap  / /testadmin-${MATCH_OFFICENAME|unknown}/ VL
            RequestHeader    unset Accept-Encoding
    </LocationMatch>
    

    按预期工作,除了每次启动时的虚假警告。

    • 0

相关问题

  • 反向代理设备[关闭]

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

  • 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