IIS Url переписать вопрос ARR

Я настроил IIS в качестве обратного прокси-сервера, используя модуль Url Rewrite и ARR 3. У меня есть публичный домен, который перенаправляет в мое приложение на localhost. Работает нормально, за исключением случаев, когда приложение перенаправляет на другой хост. т.е.: перенаправление на " https://www.google.com/search?q=url+rewrite+iis+arr+3" Мой браузер показывает " http://localhost/search?q=url+rewrite+iis+arr+3"что не получается

Размещенное приложение использует Asp Net Mvc с framework.net 4.5. Приложение работает с интегрированным конвейером в конфигурации пула приложений IIS.

Используя Fiddler, я вижу следующую трассировку при перенаправлении:

HTTP/1.1 302 Found
Cache-Control: private
Content-Length: 350
Content-Type: text/html; charset=utf-8
Location: http://localhost/search?q=url+rewrite+iis+arr+3
Server: Microsoft-IIS/7.5
X-Powered-By: ARR/3.0
X-Powered-By: ASP.NET
Date: Wed, 02 Nov 2016 16:39:18 GMT

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="https://www.google.com/search?q=url+rewrite+iis+arr+3">here</a>.</h2>
</body></html>

Мой конфиг IIS:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost/{R:1}" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="ReverseProxyOutboundRule1" preCondition="IsRedirection" stopProcessing="true">
                    <match filterByTags="A" pattern="^http(.*)" negate="false" />
                    <action type="None" />
                </rule>
                <preConditions>
                    <preCondition name="IsRedirection">
                        <add input="{RESPONSE_STATUS}" pattern="3[0-9][0-9]" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

1 ответ

Решение

Спасибо milope на форумах IIS.net (не знаю, смогу ли я опубликовать ссылку) за то, что дали мне следующее решение:

В функции кэша маршрутизации запросов на уровне сервера есть ссылка "Настройки прокси-сервера" или что-то в этом роде. Проверьте, установлен ли флажок Обратный перезапись в заголовке ответа в Настройках прокси. Если так, это может быть то, почему внешняя ссылка идет на localhost.

Это сработало для меня и решило мою проблему с перенаправлением.

Другие вопросы по тегам