Назад | Перейти на главную страницу

Apache ProxyPassReverse с параметрами из запроса

У меня есть ситуация, когда я хочу перенаправить все, что начинается с / app, на внутренний сервер. По сути, идея состоит в том, что Apache будет работать как обратный прокси, выполняя следующее преобразование:

http://external/app -> http://myserver:1082/myapp

Я смог сделать это с помощью Rewrite следующим образом:

  RewriteCond %{REQUEST_URI} ^/app
  RewriteRule ^/app(.*)$ http://myserver:1082/myapp$1 [L,P]

  ProxyPassReverse /app http://myserver:1082/myapp

Работает нормально. Проблема в том, что теперь у меня будет языковой преффикс в URL-адресе, но не в приложении. Поэтому мне нужно следующее перенаправление:

http://external/app -> http://myserver:1082/myapp
http://external/en/app -> http://myserver:1082/myapp
http://external/pt/app -> http://myserver:1082/myapp

Хотя это можно сделать с помощью перезаписи, у меня проблема с файлом proxyPassReverse. Потому что в основном мне нужно сделать динамический ProxyPassRever, который, в зависимости от фактического запроса URL-адреса пользователем, изменяет местоположение

ProxyPassReverse /en/app http://myserver:1082/myapp
ProxyPassReverse /pt/app http://myserver:1082/myapp
ProxyPassReverse /app http://myserver:1082/myapp

Это было бы что-то вроде

ProxyPassReverse ${preffix}/app http://myserver:1082/myapp

Возможно ли это?

Из ProxyPathReverse:

При использовании внутри раздела первый аргумент опускается, и локальный каталог получается из файла.

Из Расположение:

URL-адрес может использовать подстановочные знаки. В строке с подстановочными знаками? соответствует любому одиночному символу, а * соответствует любой последовательности символов. Также можно использовать расширенные регулярные выражения с добавлением символа ~.

Итак, вы должны уметь использовать:

<Location /[a-z]+/app>
    ProxyPathReverse http://myserver:1082/myapp
</Location>