일부 IIS7 web.config 압축 설정에 대한 도움이 필요합니다


9

web.config 파일에서 IIS7 압축 설정을 구성하려고합니다. HTTP 1.0 요청을 gzip으로 활성화하려고합니다.

MSDN에는 여기에 대한 모든 정보 가 있습니다 .

내 웹 사이트의 web.config 파일에이 구성 정보를 가질 수 있습니까? 아니면 응용 프로그램 수준에서 설정해야합니까? 현재 web.config에 해당 코드가 있습니다 ...

<system.webServer>
    <urlCompression 
        doDynamicCompression="true" 
        dynamicCompressionBeforeCache="true" />
    <httpCompression 
        cacheControlHeader="max-age=86400" 
        noCompressionForHttp10="False" 
        noCompressionForProxies="False" 
        sendCacheHeaders="true" />

    ... other stuff snipped ...

</system.webServer>

작동하지 않습니다 :( HTTP 1.1 요청은 1.0이 아닌 압축되고 있습니다.

위의 MSDN 페이지는 다음에서 사용할 수 있다고 말합니다.

  • Machine.config
  • ApplicationHost.config
  • 루트 응용 프로그램 Web.config
  • 응용 프로그램 Web.config
  • 디렉토리 Web.config

그렇다면 웹 사이트별로 프로그래밍 방식으로 web.config 파일에서 이러한 설정을 설정할 수 있습니까? (이것은 Application Web.config 파일입니다 ...) 내가 잘못한 것은 무엇입니까?

건배 :)

편집 : HTTP1.0이 압축되지 않는다는 것을 어떻게 알았습니까? 다음과 같은 오류 요청 추적 규칙을 사용하고 있습니다.

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END

답변:


3

IIS 7.x web.config 설정이

noCompressionForProxies="false"

web.config 레벨에서는 인정되지 않습니다. C : \ Windows \ System32 \ inetsrv \ config \ ApplicationHost.config에 다음과 같이 설정해야합니다.

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="False">

설정을 변경 한 후 IIS 재설정을 수행하십시오.

클라이언트의 웹 요청에 다음과 같은 HTTP "Via"헤더가있는 경우 요청은 IIS에 의해 프록시에서 온 것으로 결정됩니다.

Via: 1.1 foo

appcmd응용 프로그램 수준 설정을 설정 하는 데 사용할 수도 있습니다 (아마도 훨씬 더 쉽습니다).
Pure.Krome

2

약간의 연구가 끝나면 기본적으로 응용 프로그램 수준에서 '잠금'됩니다. 따라서 '잠금 해제'가 필요합니다. 이것은 명령 행 또는 (추가 다운로드) iis7 관리 도구를 통해 수행 할 수 있습니다.

예. appcmd set config -section:urlCompression /doDynamicCompression:true

굴절 :


1

HTTP1.0 요청이 압축되지 않는지 어떻게 테스트합니까? 사용중인 클라이언트가 서버에 압축 된 응답을 수락 할 수 있다고 알리지 않았을 수 있습니까?

클라이언트가 보낸 헤더를 볼 수 있다면 (파이어 버그 또는 IEHTTPHeaders에서 테스트하거나 IE에서 테스트하는 경우 또는 외부 도구를 사용하여 트래픽을 스니핑하는 경우 Firebug를 사용하여 테스트 클라이언트 자체에 의해 표시됨), 같은 것을 보라

Accept-Encoding: compress, gzip, deflate

거기 어딘가에. 클라이언트가 서버에 압축 된 응답을 수락 할 수 있다고 알리지 않으면 서버 측의 다른 설정에 관계없이 서버가 하나를 보내지 않습니다.

또 다른 문제는 자신을 식별 한 프록시 서버를 통해 테스트하는 경우 일 수 있습니다. 이 경우 noCompressionForProxies 설정이 우선하여 압축 된 응답 가능성을 차단할 수 있습니다.

HTTP1.0 요청 (보통 이전 소프트웨어)을 보내는 일부 클라이언트 및 프록시는 압축 된 응답을 받으면 올바르게 응답하지 않으므로 HTTP1.0 요청에 대한 응답에 대해 압축을 사용하도록 설정 한 경우 다음을 확인하십시오. 방문자 / 사용자가 사용할 것으로 예상되는 모든 클라이언트 / 프록시 소프트웨어에서 사이트 / 애플리케이션을 테스트하십시오. 대상 사용자가 특정 소프트웨어를 사용하도록 보장 할 수있는 경우 (예를 들어 앱이 회사 내부 네트워크 전용 인 경우), 그렇지 않으면 대부분의 서버에서 1.0 완전히 요청합니다.


NO_COMPRESSION_10 DYNAMIC_COMPRESSION_END : DYNAMIC_COMPRESSION_START의 DYNAMIC_COMPRESSION_NOT_SUCESS 이유 : 3 이유 - : 나는 HTTP1.0 요청이 실패한 요청 다시보고 추적 규칙을 사용하여 압축되지 않아요 것을 테스트하고있어
Pure.Krome
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.