Nginx Gzip Precompressionモジュールが機能しないのはなぜですか?


11

私は現在、すべての静的ファイルを提供するためにNginxをセットアップしようとしています。あまり頻繁に変更されないので、gzip_staticモジュールを使用して、ファイルのコピーを事前にgzipして、CPU時間を節約し、圧縮率を高めたいと思います。

Nginxをコンパイルし--with-http_gzip_static_moduleて、静的ファイルを提供するように設定しました。これまでのところ問題ありません。テストして静的gzippingが実際に機能していることを確認したかったので、2つのファイルを作成test.txtしましたtest.txt.gz。各ファイルの最初の行は、それらがgzipされたかどうかを示し、次に改行と256のランダムな文字があります(2つのファイル間で異なります)。

ファイルの変更時刻とgzip圧縮されたファイルの変更時刻は同じであることを確認しました。次の両方を試しました。

touch test.*
touch -r test.txt test.txt.gx

私のローカルマシンでは、curlを使用してテストしています。

curl $URL/test.txt

これはうまく機能し、事前に圧縮していないバージョンを返しますが、これを行うと:

curl -H "Accept-Encoding: gzip" $URL/test.txt | gunzip

私はまた、私は予備圧縮しませんでしたバージョンを取り戻します。に設定gzip offしてみましたnginx.confが、違いはありません。私もNginxを再コンパイルしましたが--without-http_gzip_moduleそれでも違いはないようです。Nginxは、その場でgzip自体をgzipします。

私はNginxを初めて使用しますが、ここでは本当に困っています。

これはの出力です ./nginx -V

built by gcc 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 
configure arguments: --sbin-path=$SOMEPATH/nginx --prefix=$SOMEPATH --user=$ME --group=$MYGROUP --with-http_gzip_static_module --without-http_gzip_module

そして、これが私の nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}
error_log  logs/error.log;
pid        logs/nginx.pid;
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    gzip_static on;
    sendfile        on;
    keepalive_timeout  65;
    access_log  logs/access.log;
    server {
        listen       XXXX;
        server_name  foo.bar.com;
        location / {
            root   html;
        }
        error_page  404 404.html;
        error_page   500 502 503 504 50x.html;
    }
}

どんな助けでも大歓迎です!

回答:


8

質問ではこれについて触れていませんが、共有ホスト上の別のNginxの背後でプロキシされたNginxを実行していることは十分な権限です。;)

これを書いている時点では、NginxのgzipモジュールはデフォルトでHTTP 1.1を使用していますが、Nginxはバックエンドサーバーと通信するときにHTTP 1.0しか使用できないため、次のように設定gzip_http_versionしますnginx.conf

gzip_http_version 1.0;

その変更を行った後、Nginxを再起動すると、ビジネスが開始されます。


すごい!どうしてこれを知ったのですか?
ユルゲンポール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.