понедельник, 24 мая 2021 г.

Apache dynamic proxy beckend

 Название немного кликбейтовое, но задача была такова:
 - проксирова контент с сервера за фронтом по передаче имени в url, например: запросы на wss://frontend.local/console/backend1.local/ticket/dynamic-ticketid должны попадать на wss://backend1.local:443/ticket/dynamic-ticketid. Всё бы ничего, но для сайтов как на стороне фронтенда так и на беке есть свои реврайты и они не должны пострадать. Решается подобная задачка при помощи директивы ProxyPassMatch.

ProxyPassMatch "^/console/(.*)/ticket/(.*)$" "wss://$1.local:443/ticket/$2"

В случае с необходимости в обратном прокси вопрос можно решить тоже:

ProxyPassMatch "^/console/(.*).local/(.*)$" "https://$1.local/$2"

ProxyPassReverse "^/console/(.*).local/(.*)$" "https://$1.local/$2"

Не забываем, что если у нас на backend используется ssl - то желательно ещё об этом упомянуть в конфиге и, по необходимости, отключить проверку сертификата того же backend:

    SSLProxyEngine on
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off