2011-12-16 12 views
2

私は、ファイル内のgzipで圧縮されたスタイルとスクリプトが正しくgzipで圧縮されたスタイル/スクリプトのMIMEタイプを設定:Nginxは:

問題は、それが正しいMIMEタイプを提供していないと、ブラウザがないことである
/scripts.js.gz 
/styles.css.gz 

ファイルが圧縮されていることを認識できません。cssまたはjs(ブラウザはそのタイプをapplication/octet-streamとして認識します。ここではtext/cssなどが必要です)。

nginxのmime.typeに以下を追加しようとしましたが、効果がありません。私は、ファイルが圧縮されていると認識していないと思います。

types { 
    text/css        css.gz; 
    application/x-javascript    js.gz; 
} 

ファイルにアクセスしようとすると、ブラウザはファイルをダウンロードするファイルとして扱い、存在しないように扱います。

答えて

1

MIMEタイプを変更してこれを処理するにはGzip Static Moduleを使用しないでください。

これが有効な場合、Nginxは最初に "file.ext.gz"を提供しようとしますが、見つからなければコンテキスト内のすべての要求(場所など)に対して "file.ext"を試みます。

+0

これは私が探していますものではありません、私は常に2つのファイルを生成する必要はありません(私はjavascriptやスタイルを提供しない場合がありますが、ファイルがgzipされているという情報とともにMIMEタイプを正しく送信します。 –

+0

また、たとえば、/ styles-frontend/- > styles-frontend.css.gzを書き直して提供しているファイルもありますので、指定された拡張子css.gzに対してmimetypeを正しく送信する必要があります。 –

+0

あなたのコメントは明確ではありません。あなたは提供したいfile.ext.gzのようなファイルを持っていますか?そうであれば、静的モジュールはuriに存在する場合(書き直されているかどうかに関係なく)、それらを提供します。ただし、リクエストに ".gz"を追加せず、単に ".ext"を要求します。 – Dayo

3

私は同じ問題をApacheから受けていました。 私が見つけた問題は、typesブロックでは、ファイル拡張子として.css.gzを指定することができません。しかし、ブロックはlocationです!私のソリューションは、このように、.css.gzのための場所を作り、その場所内.gzのコンテンツタイプを変更することです:

location ~ \.css\.gz$ { 

    add_header Content-Encoding gzip; 
    gzip off; 
    types { 
    text/css gz; 
    } 
}