Дисковый кэш обратного прокси IIS ARR
Я хочу настроить дисковый кэш для ответов обратного прокси-сервера для перенаправленных запросов. Я ожидаю, что все запросы к http://localhost:88/ будут перенаправлены на https://stackru.com/ (как пример) со следующим правилом перезаписи:
<rule name="ReverseProxy1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="https://stackru.com/{R:1}" />
</rule>
Который работает отлично.
И я хочу, чтобы все ответы с https://stackru.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="stackru.com" />
</conditions>
</rule>
</globalRules>
</rewrite>
К сожалению, кэш диска никогда не ударил. Я могу сказать это, изучив журнал IIS с записями X-ARR-CACHE-HIT=0. И папка кеша всегда пуста. Папка была создана пользовательским интерфейсом диспетчера IIS, и я предоставил права доступа к удостоверению пула приложений для этой папки, поэтому я предполагаю, что проблема не в правах доступа к папке кэша.
Я что-то пропустил? Поиск решения в Интернете не дал мне никаких результатов, поэтому любые отзывы очень ценятся.
1 ответ
Я обнаружил, что проблема заключалась в том, что в ответе SO присутствует заголовок ответа Vary. И на основе ответа на форумах IIS ARR не поддерживает кэширование, когда в ответе есть заголовок Vary.