Использовать пользовательский заголовок HTTP в строке ProxyPassLlocation - PullRequest
0 голосов
/ 24 марта 2020

Мне нужно иметь возможность сделать GET-запрос к внутреннему Apache серверу, работающему в качестве хоста ProxyPass для доступа к группе конечных точек API, но использовать собственный HTTP-заголовок в запросе GET, чтобы указать, какой поддомен получает запрос прокси в.

По сути, существует несколько сотен поддоменов, и невозможно выполнить перезапись URL-адреса в коде до выполнения запроса. Что можно сделать, так это добавление пользовательских заголовков HTTP к запросам. Так, например, для тестирования я хочу, чтобы это прокси на https://testsub1.api-us1.com/api/3/campaigns. Итак, с моего внутреннего хоста тестирования я скручиваю следующее:

curl -H "subdomain: testsub1" http://1.2.3.4/actcampaign2/

На стороне хоста ProxyPass это работает в соответствующем VirtualHost (в 1.2.3.4):

RequestHeader set subdomain %{subdomain}e
ProxyPass        /actcampaign2 https://%{subdomain}e.api-us1.com/api/3/campaigns
ProxyPassReverse /actcampaign2 https://%{subdomain}e.api-us1.com/api/3/campaigns

Но когда я прихожу к этому, я просто получаю ответ от нашего вышестоящего прокси-сервера (squid, в другом месте сети, что не важно), что он не смог выполнить поиск DNS для "% {subdomain} e.api-us1.com".

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

Ожидаемый результат будет для Apache, чтобы развернуть заголовок в строку, чтобы он стал "https://testsub1.api-us1.com/api/3/campaigns "и продолжить работу с прокси-сервером в обычном режиме (это работает, если я, конечно, вручную перехожу на этот URL)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...