回答:
いくつかのファイル拡張子に加えて、より完全なキャッシュヘッダーを作成することを好みます。「?」プレフィックスは「非キャプチャ」マークであり、nginxは$ 1を作成しません。不要な負荷を減らすのに役立ちます。
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
root
セットを持つ静的ファイルの定義がありました。その場合、そのブロックにディレクティブを追加する必要があります。(これは2年遅れですが、将来の市民のために)
受け入れられた回答によってファイルが表示されなくなる理由についてコメントするのに十分な評判はありませんが、私はそれを理解し、助けたいと思います!
短縮版:
グローバルなものが設定されていない場合は、画像のロケーションブロックにルートディレクトリが指定されていることを確認してください!
以下の長いバージョン:
まず第一に、このソリューションを実装する私の方法は、この回答に非常に似ていて、ルールを書くところです(受け入れられた回答のように):
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
img-cache.confファイルに
そして、そのファイルをserver {...}
ディレクティブに含めます。
私のサイトで利用可能なフォルダーにあるsomesite.comの例:
#Image Caching
include /etc/nginx/conf/img-cache.conf;
そうすれば、実行中の複数のサイトに画像キャッシュの場所ブロックを追加できます。
第二に、/ var / www /にpublic_htmlとして許可する2つのフォルダー(安全およびトレーニング)が含まれる状況があるため、サイトのサーバーディレクティブで特定の場所をブロックしてこれらのフォルダーを除外する必要があります。
そのため、グローバルルートディレクトリセットはありません。
そのため、画像の場所をブロックするときに、画像を検索するルートディレクトリを提供しない場合があります。
私の解決策は次のとおりでした:
location ~ ^/training.+\.(?:ico|css|js|gif|jpe?g|png)$ {
root /var/www/;
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri 404;
}
location ~ ^/.+\.(?:ico|css|js|gif|jpe?g|png)$ {
root /var/www/secure;
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri 404;
}
.conf
。の適切なフォルダはのnginx/1.14.0 (Ubuntu)
よう/etc/nginx/snippets/
です。
有効期限を最大に設定することもできます。以下は、cssとjsに使用するディレクティブです。
# Set css and js to expire in a very long time
location ~* ^.+\.(css|js)$ {
access_log off;
expires max;
}
前述のすべてのソリューションは、異なるパスに対して異なるエイリアスを持つ可能性を否定します。また、1か所ですべての異なるキャッシュ有効期限を設定するために、次の方法でnginxマップを使用する必要があります。
...
# Expires mappings
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript 7d;
~image/ max;
}
...
server {
listen ...;
expires $expires;
location /assets/ {
# It is now possible to serve some resources from different path
alias /var/www/my_other_path/
}
# and have them all have same expirations
location / {
try_files $uri $uri/ /index.html;
}
...
}
Off
キャッシュを無効にしますepoch
(UNIXエポックの場合)。リソースが常に再フェッチされmax
、日付がブラウザーの最大値に設定されます。
〜image /はすべての画像タイプに一致します。
nginxマップの詳細については、http: //nginx.org/en/docs/http/ngx_http_map_module.htmlをご覧ください。
$sent_http_content_type
が"text/css;charset=UTF-8"
上の式に失敗することに注意してください。
すべての静的ファイルのホームとなる場所が1つある場合、次のようになります...
location /static {
your/location/to/static/files/static;
expires 30d;
add_header Cache-Control "public";
}
受け入れられた答えにより、nginxは静的ファイルを見つけられませんでした。理由は確かではありませんが、これは単純な代替手段です。
/static
ましたが、エイリアスの最後(.../files
例の直後)にフォルダー(場所に設定したものは何でも)を追加してください。
これは非常に古いスレッドなので、最新のすばらしいチュートリアルを見つけました。
おそらくあなたはそれをチェックアウトしたいでしょう