BACKEND: у меня Tomcat подключен к Apache и JKMount'ed к webapps.demo.example.com
.
FRONTEND: основной VirtualHost настроен на demo.example.com
. У меня есть одно приложение Proxy'd для BACKEND. Это прекрасно работает, за исключением того, что ServerName и ContextPath нужно извлечь из FRONTEND.
Попробовал ниже, следуя этим инструкциям: 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.
Как правильно проксировать при передаче определенных переменных среды с сервера FRONTEND? Я могу изменить приложение Test1, если оно абсолютно необходимо. Но мне нужна переменная для работы. Project1
не может быть жестко закодированным значением.
Может ли здесь помочь mod_proxy_ html или mod_headers?