Обратный прокси-сервер для помещения значения заголовка в качестве параметра URL

Обратный прокси-сервер для помещения значения заголовка в качестве параметра URL

Мне нужно настроить обратный прокси, который будет помещать значение заголовка из исходного запроса в качестве параметра в целевой URL. Причина этого исключительно в приложении, и, к сожалению, я не могу изменить это приложение. Например, мне нужно следующееhttps://a.comс http заголовком myparam=abcd мне нужно проксироватьhttp://b.com/?val=abcd

Можно ли настроить IIS или Apache для выполнения такой задачи? Если да, можете ли вы объяснить, как?

решение1

Протестировано в Apache 2.4:

# (In a VirtualHost for a.com)
RewriteEngine on
RewriteRule ^(.*)$ http://b.com$1?val=%{HTTP:myparam} [QSA,P]

Примеры переписывания (если заголовок myparamимеет значение myvalue):

  • a.comстановитсяhttp://b.com?val=myvalue
  • a.com/path/hereстановитсяhttp://b.com/path/here?val=myvalue
  • a.com/path?a=b&c=dстановитсяhttp://b.com/path?a=b&c=d&val=myvalue

Если myparamзаголовок не существует, a.com/xбудет выполнено перенаправление на http://b.com/x?val=. Если вы хотите выполнить перенаправление на http://b.com/x, вы можете использовать следующую более длинную версию вышеприведенного:

RewriteEngine on
RewriteCond %{HTTP:myparam} .
RewriteRule ^(.*)$ http://example.com$1?val=%{HTTP:myparam} [QSA,L,P]
RewriteRule ^(.*)$ http://example.com$1 [P]

Ссылки по теме:

решение2

Для IIS вы можете использоватьРасширение URL-перезаписи:

IIS URL Rewrite 2.0 позволяет веб-администраторам создавать мощные правила для реализации URL-адресов, которые проще запомнить пользователям и легче найти поисковым системам. Используя шаблоны правил, карты перезаписи, поставщиков .NET и другие функции, интегрированные в IIS Manager, веб-администраторы могут легко настраивать правила для определения поведения перезаписи URL-адресов на основе заголовков HTTP, заголовков ответов или запросов HTTP, переменных сервера IIS и даже сложных программных правил. Кроме того, веб-администраторы могут выполнять перенаправления, отправлять пользовательские ответы или останавливать HTTP-запросы на основе логики, выраженной в правилах перезаписи.

Работает с: IIS 7, IIS 7.5, IIS 8

Пошаговое руководство можно найти на сайте: Создание правил перезаписи для модуля перезаписи URL.

Связанный контент