Как отключить BrotliCompressionModule для конкретного приложения - PullRequest
1 голос
/ 11 февраля 2020

По умолчанию IIS установил HTTP-модуль сжатия gzip. Позже я установил Brotli Compression HTTP Module для IIS, чтобы улучшить степень сжатия для просмотра содержимого. В ApplicationHost.config brotli был добавлен в трех местах, как показано ниже.

  1. globalModules
  2. httpCompression
  3. modules

    <system.webServer>
    <globalModules>
       <add name="BrotliCompressionModule" image="%Windir%\system32\inetsrv\IisBrotli.dll" preCondition="bitness64" />
    </globalModules>
    <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
        <scheme name="br" dll="%Windir%\system32\inetsrv\IisBrotli.dll" staticCompressionLevel="5" dynamicCompressionLevel="5" />
    </httpCompression>
    <location path="" overrideMode="Allow">
        <system.webServer>
        <modules>
                <add name="BrotliCompressionModule" preCondition="managedHandler,runtimeVersionv4.0" />
        </modules>
        </system.webServer>
    </location>
    

У меня есть приложение для панели мониторинга, которое является 32-разрядным приложением и совместимо с IIS. Приложение работало нормально до установки HTTP-модуля Brotli Compression в IIS.

После установки сжатия brotli приложение не работает из-за того, что brotli остановил пул DashboardApplication. Затем я обнаружил следующую root причину этой проблемы.

Brotli - это 64-битное приложение, которое не позволяет использовать мое 32-битное приложение на IIS. Основываясь на решениях форума, я добавил preConditon = "bitness64", который помогает запускать globalModules только для 64-битных приложений.

Данное решение помогло избежать остановки пула приложений. Затем возникла новая проблема: не удалось найти файл BrotliCompressionModule. Мы нашли решение удалить модуль brotli из web.config моего приложения, как показано ниже. Это помогло решить проблему с не найденным файлом.

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
    <remove name="BrotliCompressionModule" />
</modules>
</system.webServer>

Затем возникла другая проблема - Ошибка 500.19 HTTP - возникла внутренняя ошибка сервера с кодом ошибки 0x800700c1.

Мы уже избежали сжатия brotli в локальном разделе, но не в разделе.

Если я удалил Brotli из раздела httpCompression, мое 32-битное приложение панели мониторинга работает хорошо. но он не будет сжимать другое приложение в модуле brotli.

Я подозреваю, что нам также нужно избегать brotli в разделе httpCompression, но я не нашел решения.

Примечание: мне нужны оба сжатия gzip и br (Brotli). Поскольку Brotli будет использоваться для других моих 64-битных приложений.

Можно ли отключить сжатие brotli для конкретного 32-битного приложения на IIS? В то же время Brotli нужно работать на других сайтах приложений.

Заранее спасибо.

...