需要通过 Apache 代理传递环境变量

需要通过 Apache 代理传递环境变量

后端:我已将 Tomcat 连接到 Apache 并将 JKMount 连接到webapps.demo.example.com

前端:已为 设定了主 VirtualHost demo.example.com。我有一个应用程序代理到后端。除了 ServerName 和 ContextPath 需要从前端提取外,此方法效果很好。

按照以下说明进行了尝试: https://www.xinotes.net/notes/note/1954/

<VirtualHost *:80>
    DocumentRoot "/home/example.com"
    ServerName demo.example.com

    ProxyPassInterpolateEnv On
    RewriteEngine on
    RewriteMap lowercase int:tolower

    RewriteRule ^ - [E=SERVER_NAME:${lowercase:%{SERVER_NAME}}]

    ProxyPreserveHost On

    ProxyPass "/Project1/Test" "http://webapps.demo.example.com/Test1"
    ProxyPassReverse /Project1/Test http://%{SERVER_NAME} interpolate

    ErrorLog "/home/logs/httpd/example-error_log"
    CustomLog "/home/logs/httpd/example-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/home/webapps"
    ServerName webapps.demo.example.com

    JkMount /Test1 worker1
    JkMount /Test1/* worker1

    ErrorLog "/home/logs/httpd/webapps-error_log"
    CustomLog "/home/logs/httpd/webapps-access_log" common
</VirtualHost>

添加后ProxyPreserveHost On,我的代理链接返回 404,而不是 Test1 应用程序。

从前端服务器传递某些环境变量时,代理的正确方法是什么?如果绝对必要,我可以更改 Test1 应用程序。但我确实需要一个变量来处理。Project1不能是硬编码值。

mod_proxy_html 或 mod_headers 能帮忙吗?

相关内容