Необходимо передать переменные среды через прокси Apache - PullRequest
0 голосов
/ 12 февраля 2020

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?

...