web-dev-qa-db-ja.com

nginx gzip Varyヘッダーと既存のVaryヘッダー

私はアクティブなgzip圧縮を試みており、オプションgzip_varyをオンに設定しています。 Vary:Accept-Encodingヘッダーを含めます。

問題は、私のアプリケーションがすでにVary:ヘッダーを設定していることです。したがって、応答には2つのVary:ヘッダーがあり、1つはアプリケーションから、もう1つはnginxからのものです。

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 17 Dec 2016 13:28:38 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Sat, 17 Dec 2016 13:28:38 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Vary: User-Agent
Content-Encoding: gzip

しかし、私は代わりに次のようになると思います:

Vary: Accept-Encoding, User Agent

どうすればこれを達成できますか?

6
Dennis C.

RFC2616 は、ヘッダーの重複が許容されることを示しており、カンマ区切りの値のリストを持つ単一のヘッダーと同じように処理する必要があります。

同じフィールド名を持つ複数のメッセージヘッダーフィールドは、そのヘッダーフィールドのフィールド値全体がコンマ区切りのリストとして定義されている場合(つまり、#(values))にのみ、メッセージに存在する可能性があります。メッセージのセマンティクスを変更せずに、複数のヘッダーフィールドを1つの「フィールド名:フィールド値」のペアに組み合わせることが可能である必要があります。後続の各フィールド値を最初に追加し、それぞれをカンマで区切ります。したがって、同じフィールド名を持つヘッダーフィールドが受信される順序は、結合されたフィールド値の解釈にとって重要です。したがって、プロキシは、メッセージが転送されるときにこれらのフィールド値の順序を変更してはなりません。

したがって、適切な動作を得るために何もする必要はありません。

5
Jason Martin

この方法でgzipを使用できます。

gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/gif image/jpeg application/atom+xml application/rss+xml text/x-component image/png image/tiff image/vnd.wap.wbmp image/x-icon image/x-jng image/x-ms-bmp image/svg+xml image/webp application/font-woff application/msword application/pdf;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

詳細については、このリンクを確認してください wsgi-nginxとnginxロードバランサー間のトラフィックを圧縮

0
Ashish Gupta