web-dev-qa-db-ja.com

一部のIIS7 web.config圧縮設定についてサポートが必要

IIS7圧縮設定をweb.configファイルで構成しようとしています。 HTTP 1.0リクエストをgzipにできるようにしています。

MSDNにはすべての情報があります ここについて

この構成情報を自分のWebサイトの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ファイルでプログラム的にWebサイトごとに設定できますか? (これはアプリケーションのWeb.configファイルです...)何が間違っていますか?

乾杯:)

編集:HTTP1.0が圧縮されていないことを確認する方法を尋ねられました。失敗したリクエストトレースルールを使用しています。

DYNAMIC_COMPRESSION_START
DYNAMIC_COMPRESSION_NOT_SUCESS
    Reason: 3
    Reason: NO_COMPRESSION_10
DYNAMIC_COMPRESSION_END
9
Pure.Krome

かなりの調査の後、デフォルトでアプリケーションレベルで「ロック」されます。そのため、「ロック解除」する必要があります。これは、コマンドラインまたは(追加ダウンロード)iis7管理ツールを使用して実行できます。

例えば。 appcmd set config -section:urlCompression /doDynamicCompression:true

屈折:

2
Pure.Krome

IIS 7.x web.config setting of

noCompressionForProxies="false"

Web.configレベルでは受け入れられません。次のようにC:\ Windows\System32\inetsrv\config\ApplicationHost.configに設定する必要があります。

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

設定を変更したら、必ずIISリセットを実行してください。

IIS=クライアントのWebリクエストに次のようなHTTP "Via"ヘッダーがある場合、リクエストはプロキシからのものであると判断されます。

Via: 1.1 foo
3
evermeire

HTTP1.0リクエストが圧縮されていないことをどのようにテストしていますか?使用しているクライアントがサーバーに圧縮された応答を受け入れることができることを伝えていないのでしょうか?

クライアントから送信されたヘッダーを確認できる場合(テストクライアント自体によって提示され、Firebugなどを使用してFirefoxでテストしている場合はIEHTTPHeadersをIEでテストしている場合、または外部ツールを使用してトラフィックをスニッフィングして)、のようなものを見る

Accept-Encoding: compress, gzip, deflate

どこかに。クライアントが圧縮された応答を受け入れることができることをサーバーに通知しない場合、サーバーは、サーバー側の他の設定に関係なく、応答を送信しません。

別の問題としては、自身を識別しているプロキシサーバーを介してテストしている場合があります。この場合、noCompressionForProxies設定が優先され、圧縮された応答の可能性をブロックする可能性があります。

注意すべきことの1つは、HTTP1.0要求(通常は古いソフトウェア)を送信する一部のクライアントとプロキシは、圧縮応答を受け取った場合に正しく応答しないため、HTTP1.0要求への応答に対して圧縮を有効にする場合は、訪問者/ユーザーに使用を期待するすべてのクライアント/プロキシソフトウェアでサイト/アプリケーションをテストします。ターゲットオーディエンスが特定のソフトウェアを使用することを保証できる場合(たとえば、アプリが社内ネットワークのみを対象としている場合)、これはそれほど問題ではありませんが、それ以外の場合、テストする多くの組み合わせがあるため、ほとんどのサーバーで圧縮が無効になります。 1.0は完全に要求します。

1
David Spillett