后端:我已将 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 能帮忙吗?