Я почти ничего не знаю о настройке IIS, но мне поручено добавлять переменную запроса к каждому запросу, который выполняется через сервер IIS, который используется в качестве веб-прокси.
Мы ищем любой URL-адрес, в котором первый сегмент пути после домена является фиксированной строкой, например / bongo /, и перенаправляем его на внутренний сервер. У меня он работает для перенаправления, но я почти уверен, что у меня много мусора, который мне не нужен в следующей конфигурации, которую я получил из другого ответа.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Route the requests for bongo Player" stopProcessing="true">
<match url="^bongo/(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="https://bongo.fse.companyinc.com/bongo/{R:1}" />
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" />
</serverVariables>
</rule>
</rules>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://bongo.fse.companyinc.com/bongo/(.*)" />
<action type="Rewrite" value="/{R:2}" />
</rule>
<rule name="RewriteRelativePaths" preCondition="ResponseIsHtml1">
<match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/bongo/(.*)" negate="false" />
<action type="Rewrite" value="/{R:1}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="ASP" verbosity="Verbose" />
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
<add provider="ISAPI Extension" verbosity="Verbose" />
<add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI,WebSocket,Rewrite,RequestRouting" verbosity="Verbose" />
</traceAreas>
<failureDefinitions timeTaken="00:00:30" statusCodes="200-299,300-399,400-499,500-599" verbosity="Warning" />
</add>
</traceFailedRequests>
</tracing>
</system.webServer>
</configuration>
1) Я даже не уверен, что мне нужны исходящие правила.
2) Основная проблема, с которой я столкнулся, заключается в том, что я хочу всегда добавлять переменную запроса, независимо от того, существуют ли переменные запроса или нет. Я перепробовал слишком много конфигураций, чтобы перечислить их здесь, но мне не всегда удается добавить переменную при проксировании. Кроме того, я думаю, что должно быть какое-то условие, которое делает что-то другое, если уже есть аргументы или если добавляемый является единственным.
Буду признателен за помощь любых гуру IIS.
Собственно, решил это. Это был кусок пирога. Проблема в том, что мы предполагали, что IIS добавит существующую строку запроса, поэтому мы попробовали:
<action type="Rewrite" url="https://bingo.lms.bingoinc.com/bingo/{R:1}&abc=asd23242" />
Фактически, он достаточно умен, чтобы проверить, есть ли уже знак "?" и добавляет исходные переменные запроса в конец, чтобы это работало:
<action type="Rewrite" url="bingo.lms.bingoinc.com/bingo{R:1}?abc=asd23242" />