Обратный прокси-Wildcard?

Вопрос или проблема

Возможно ли использовать подстановочный символ для реверсивного прокси с помощью ProxyPass?

Я видел похожую конфигурацию ниже для ProxypassMatch, поэтому попытался создать что-то подобное, используя только proxypass.

ProxyPass ^/retirement-readiness-savings(.*)$ http://prod-domain-com-2018.azurewebsites.net/retirement-readiness-savings-november-2018/$1

Проблема, с которой я сталкиваюсь, связана с ограничениями по количеству символов (25) в именах каталогов в нашей новой CMS.

Полный URL, например, ниже:
/retirement-readiness-savings-november-2018

Для примера с конфигурацией реверсивного прокси ниже:

#ProxyPass ^/retirement-readiness-savings(.*)$ http://prod-domain-com-2018.azurewebsites.net/retirement-readiness-savings-november-2018$1
#ProxyPassReverse ^/retirement-readiness-savings(.*)$ http://prod-domain-com-2018.azurewebsites.net/retirement-readiness-savings-november-2018$1

Таким образом, пока URL соответствует первым 3 словам, он все равно будет отображать ту же страницу, игнорируя november-2018.

У нас установлен только ProxyPass, и мы используем httpd.conf для управления ReverseProxy.

Мы используем RHEL 5.11 с установленным модулем mod_proxy.

ИЗМЕНЕНИЕ: Что я пытаюсь сделать, так это проверить первые 25 символов пути каталога, но все равно сопоставить с полным Azure путем.

Мне неясно, где именно ограничение в 25 символов, но, возможно, вы хотите сделать что-то подобное?

ProxyPass ^/site/(.{1,25}).*$ http://prod-domain-com-2018.azurewebsites.net/site/$1

Это захватит первые 25 символов после /site/ и затем использует это в сопоставлении. Например, запрос для этого:

/site/retirement-readiness-savings-some-thing-or-other

… будет сопоставлен с этим:

http://prod-domain-com-2018.azurewebsites.net/site/retirement-readiness-savi

(‘retirement-readiness-savi’ == ограничение в 25 символов)

Ответ или решение

Возможен ли обратный прокси с использованием символа подстановки?

Да, использование символа подстановки в конфигурации обратного прокси, особенно с параметрами ProxyPass и ProxyPassReverse, вполне допустимо и может быть настроено в вашем Apache HTTP Server. В данной статье мы рассмотрим, как правильно реализовать подобную настройку, а также коснемся важности учета ограничений на длину имени каталога в вашей системе управления контентом (CMS).

Проблематика

Как вы уже заметили, существует ограничение на 25 символов в имени каталога в вашей новой CMS. Это создает необходимость упрощенной конфигурации для корректной обработки адресов, которые превышают данный лимит, сохраняя при этом правильную маршрутизацию на внутренний сервис.

На примере, который вы привели:

ProxyPass ^/retirement-readiness-savings(.*)$ http://prod-domain-com-2018.azurewebsites.net/retirement-readiness-savings-november-2018/$1

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

Решение с использованием регулярных выражений

Чтобы решить вашу задачу, вы можете использовать регулярные выражения для захвата первых 25 символов из запрашиваемого адреса. Вот как может выглядеть ваша конфигурация:

ProxyPassMatch ^/retirement-readiness-savings(.{0,25}).*$ http://prod-domain-com-2018.azurewebsites.net/retirement-readiness-savings-november-2018/$1
ProxyPassReverse ^/retirement-readiness-savings(.{0,25}).*$ http://prod-domain-com-2018.azurewebsites.net/retirement-readiness-savings-november-2018/$1

В данном случае:

  • ProxyPassMatch будет обрабатывать URL, который начинается с /retirement-readiness-savings, захватывая до 25 символов после данного префикса.
  • $1 в целевом URL будет заменено на соответствующую часть из исходного запроса.

Примеры

Если вы сделаете запрос по следующему URL:

/retirement-readiness-savings-abc-def-ghij

то с вашим обновленным конфигом прокси запрос будет направлен на:

http://prod-domain-com-2018.azurewebsites.net/retirement-readiness-savings-november-2018/retirement-readiness-savings-abc-def

Тем самым, вы сможете динамически обрабатывать запросы, не нарушая ограничение на длину.

Заключение

Конфигурация обратного прокси с использованием символов подстановки может значительно упростить работу с URL вашего сайта, особенно в условиях ограничений, которые накладывает ваша CMS. Использование регулярных выражений в настройках Apache позволяет гибко управлять маршрутами, что может быть особенно полезно в сценариях, требующих динамической маршрутизации на основе входящих запросов.

Если у вас возникнут дополнительные вопросы или нужно будет провести более детальный анализ, не стесняйтесь обращаться за помощью. Ваше понимание архитектуры и конфигурации Apache поможет вам в дальнейшем оптимизировать работу вашего веб-приложения.

Оцените материал
Добавить комментарий

Капча загружается...