web-dev-qa-db-ja.com

JSON応答のnginxでgzipが機能しない

JSON応答がgzipされない理由を理解しようとしています。私のメインngninx.confで、私は:

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types    text/plain application/javascript application/x-javascript text/javascript text/xml text/css text/html application/json  application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;

次に、スクリプトでコンテンツタイプを次のように出力します。

print $IN->header( 'application/json' );

これは次のように変換されます:

Content-Type: application/json \n\n

私はそこに正しいコンテンツタイプを表示します、それは圧縮されていません:

curl -H "Accept-Encoding: gzip" -I 'https://www.example.com/cgi-bin/links/spots_load_new.cgi?catid=9&linkid=0&t=luna'
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 07 Dec 2017 10:18:58 GMT
Content-Type: application/json
Connection: keep-alive
Keep-Alive: timeout=60
Access-Control-Allow-Origin: *

JSファイルでテストすると、正常に動作します。

curl -H "Accept-Encoding: gzip" -I http://www.example.com/new_design/categories25.min.js
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 07 Dec 2017 10:23:54 GMT
Content-Type: application/javascript
Last-Modified: Wed, 27 Sep 2017 14:21:09 GMT
Connection: keep-alive
Keep-Alive: timeout=60
Vary: Accept-Encoding
ETag: W/"59cbb3d5-323e"
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Content-Encoding: gzip

何が欠けていますか? (私はnginx、FWIWを再起動しました:))

PDATE:できるだけ簡単にするために-test.jsonファイル(有効なコンテンツ)を作成しましたが、それでもgzipされていないファイルとして返されます。

curl -H "Accept-Encoding: gzip" -I https://www.example.com/new_design/test.json
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 07 Dec 2017 17:58:25 GMT
Content-Type: application/json
Content-Length: 245
Last-Modified: Thu, 07 Dec 2017 17:55:58 GMT
Connection: keep-alive
Keep-Alive: timeout=60
ETag: "5a2980ae-f5"
Accept-Ranges: bytes
2
Andrew Newby

ああ男-私はこれがどれほどばかげているか信じられない!

問題のデータは245バイトでした:

Content-Length: 245

...そして私はこのセットを持っていました:

gzip_min_length 256kセット。私はそれを次のように変更しました:

gzip_min_length 128;

そして、それは今うまく動作します。 ARGH!

3
Andrew Newby