2015-12-25 2 views
2

Я хочу настроить кеш диска для ответов обратного прокси для перенаправленных запросов. Я ожидаю, что все запросы к http://localhost:88/, которые будут направлены https://stackoverflow.com/ (в качестве примера) со следующим правилом перезаписи:Кэш-память обратного прокси-сервера IIS ARC

<rule name="ReverseProxy1" stopProcessing="true"> 
    <match url="(.*)" /> 
    <action type="Rewrite" url="https://stackoverflow.com/{R:1}" /> 
</rule> 

который работает прекрасно.

И я хочу, чтобы все ответы от https://stackoverflow.com/ были кэшированы на диске. У меня есть следующая настройка в applicationHost.config:

<diskCache scavengerInterval="00:05:00"> 
    <driveLocation path="C:\inetpub\temp\cache" maxUsage="0" /> 
    <compression enabled="true"> 
    <add mimeType="text/*" enabled="true" /> 
    <add mimeType="message/*" enabled="true" /> 
    <add mimeType="application/x-javascript" enabled="true" /> 
    <add mimeType="application/javascript" enabled="true" /> 
    </compression> 
    <sharedDriveLocation path="" /> 
</diskCache> 
<proxy enabled="true" httpVersion="PassThrough" reverseRewriteHostInResponseHeaders="true"> 
    <cache requestConsolidationEnabled="true" queryStringHandling="Accept" validationInterval="00:01:00" /> 
</proxy> 
<rewrite> 
    <globalRules> 
    <rule name="ARR_CacheControl_b17f5877-33f6-4bed-be49-f3c07a38cfef" enabled="true" patternSyntax="Wildcard"> 
     <match url="*" /> 
     <serverVariables> 
     <set name="ARR_CACHE_CONTROL_OVERRIDE" value="1,max-age=1800" /> 
     </serverVariables> 
     <conditions> 
     <add input="{HTTP_HOST}" pattern="stackoverflow.com" /> 
     </conditions> 
    </rule> 
    </globalRules> 
</rewrite> 

К сожалению, кэш диска никогда не попадает. Я могу рассказать об этом, изучив журнал IIS с помощью записей X-ARR-CACHE-HIT = 0. И папка с кешем всегда пуста. Папка была создана с помощью интерфейса диспетчера IIS, и я предоставил права доступа к идентификатору пула приложений в эту папку, поэтому я предполагаю, что проблема не в правах доступа к папке кеша.

Я пропустил что-нибудь? Поиск решения в Интернете не дал мне никаких результатов, поэтому любой ввод очень ценится.

ответ

3

Я выяснил, что проблема заключалась в том, что заголовок ответа Vary присутствует в ответе SO. И на основании ответа на IIS forums ARR не поддерживает кеширование, когда в ответе есть заголовок Vary.