2016-11-29 3 views
2

Я установил Redmine через Bitnami. В настоящее время она работает на сервере Apache наURL-адрес IIS переписывается с файлом cookie виртуального каталога?

http://localhost:81/redmine 

Теперь я хочу, чтобы включить это в IIS, как обратный прокси-сервер. Так в IIS, я создать приложение http://localhost/redmine

и теперь я хочу, чтобы обратный прокси из http://localhost:81/redmine в http://localhost/redmine.

Поэтому я настроил URL-переписывание, как показано ниже.
Кажется, что работает, кроме входа. Печенье не переписывается. Это потому, что redmine находится в redmine виртуального каталога на Apache Server, но устанавливает cookie как http://localhost:81, а не http://localhost:81/redmine.

Как изменить URL-переписывание, чтобы файл cookie также был переписан?

</system.web> 
    <system.webServer> 
     <httpRedirect enabled="false" destination="http://localhost:81/redmine/" childOnly="false" /> 
     <rewrite> 
      <rules> 
       <rule name="redmine" patternSyntax="Wildcard" stopProcessing="true"> 
        <match url="*" /> 
        <!-- 
        <conditions> 
        <add input="{HTTP_COOKIE}" pattern="_redmine_session=([0-9.a-zA-Z]+)" /> 
        </conditions> 
       --> 
       <!-- 
       <conditions> 
        <add input="{HTTP_COOKIE}" pattern="_redmine_session=(.*?);" /> 
       </conditions> 
       --> 
        <action type="Rewrite" url="http://localhost:81/redmine/{R:0}" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 

ответ

2

Вы пропустили одну вещь: Модуль URL-перезаписи является модулем перезаписи URL-адресов.
Это не модуль обратного прокси.

Поэтому не достаточно добавить правило от http://localhost/virt_dir_x до http://localhost:3000/virt_dir_y.

Вам также необходимо переписать обратное направление: http://localhost:3000/virt_dir_y. в http://localhost/virt_dir_x

см this

<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="ReverseProxyInboundRule1" stopProcessing="true"> 
       <match url="(.*)" /> 
       <action type="Rewrite" url="http://http://127.0.0.1:3000/{R:1}" /> 
      </rule> 
     </rules> 
     <outboundRules> 
      <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1"> 
       <match filterByTags="A, Form, Img" pattern="^http(s)?://http://127.0.0.1:3000/(.*)" /> 
       <action type="Rewrite" value="http{R:1}://localhost/{R:2}" /> 
      </rule> 
      <preConditions> 
       <preCondition name="ResponseIsHtml1"> 
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> 
       </preCondition> 
      </preConditions> 
     </outboundRules> 
    </rewrite> 
</system.webServer> 

Это предполагает, что вы оба приложения в виртуальной директории "Экспортировать".