nginx を使用して静的ファイルをサーバーにキャッシュする方法

WBOY
リリース: 2023-05-15 23:37:04
転載
1676 人が閲覧しました

1. nginx キャッシュの利点

nginx を使用して静的ファイルをサーバーにキャッシュする方法

図に示すように、nginx キャッシュは、nginx キャッシュの処理リクエストをある程度削減できます。ソースサーバーの圧力。
静的ファイル (css、js、画像など) の多くは頻繁に更新されないためです。 nginx は proxy_cache を使用してユーザーリクエストをローカルディレクトリにキャッシュします。次の同じリクエストは、サーバーにリクエストすることなく、キャッシュ ファイルを直接呼び出すことができます。
結局のところ、io 集中型のサービスの処理が nginx の強みです。

2. 設定方法

最初に栗:

http{
  proxy_connect_timeout 10;
  proxy_read_timeout 180;
  proxy_send_timeout 5;
  proxy_buffer_size 16k;
  proxy_buffers 4 32k;
  proxy_busy_buffers_size 96k;
  proxy_temp_file_write_size 96k;
  proxy_temp_path /tmp/temp_dir;
  proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
  server {
    listen    80 default_server;
    server_name localhost;
    root /mnt/blog/;
    location / {
    }
    #要缓存文件的后缀,可以在以下设置。
    location ~ .*\.(gif|jpg|png|css|js)(.*) {
        proxy_pass http://ip地址:90;
        proxy_redirect off;
        proxy_set_header host $host;
        proxy_cache cache_one;
        proxy_cache_valid 200 302 24h;
        proxy_cache_valid 301 30d;
        proxy_cache_valid any 5m;
        expires 90d;
        add_header wall "hey!guys!give me a star.";
    }
  }
  # 无nginx缓存的blog端口
  server {
    listen 90;
    server_name localhost;
    root /mnt/blog/;
    location / {
    }
  }
}
ログイン後にコピー

サーバー上でテストしているため、2 つのポート 80 と 90 2 つのサーバー間の対話をシミュレートするために使用されます。

ポート 80 は通常のドメイン名 () アクセスに接続されています。
ポート 90 は、ポート 80 によってプロキシされたリソース アクセスの処理を担当します。
ポート 90 がソース サーバー、ポート 80 が nginx リバース キャッシュ プロキシ サーバーに相当します。

次に、設定項目について説明します。

2.1 http レイヤー設定

 proxy_connect_timeout 10;
  proxy_read_timeout 180;
  proxy_send_timeout 5;
  proxy_buffer_size 16k;
  proxy_buffers 4 32k;
  proxy_busy_buffers_size 96k;
  proxy_temp_file_write_size 96k;
  proxy_temp_path /tmp/temp_dir;
  proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
ログイン後にコピー
  • proxy_connect_timeout サーバー接続タイムアウトTime

  • proxy_read_timeout 接続が成功したら、バックエンド サーバーの応答時間まで待機します。

  • proxy_send_timeout バックエンド サーバーのデータが返される時間

  • proxy_buffer_size バッファのサイズ

  • proxy_buffers 各接続に設定されるバッファの数はnumber、各バッファのサイズはsize#です。

  • ##proxy_busy_buffers_size バッファリングされた応答機能をオンにした後、すべての応答を読み取らずに書き込みバッファーが特定のサイズに達した場合、nginx はバッファーがこれより小さくなるまで必ずクライアントに応答を送信します。価値。

  • proxy_temp_file_write_size nginx が毎回一時ファイルにデータを書き込むためのサイズ制限を設定します。

  • proxy_temp_path バックエンドから受信した一時ファイルサーバー ストレージ パス

  • proxy_cache_path キャッシュ パスとその他のパラメータを設定します。キャッシュされたデータが inactive パラメーターで指定された時間内 (現在は 1 日) にアクセスされない場合、そのデータはキャッシュから削除されます

2.2 サーバー層の設定

2.2.1 リバース キャッシュ プロキシ サーバー

server {
    listen    80 default_server;
    server_name localhost;
    root /mnt/blog/;
    location / {
    }
    #要缓存文件的后缀,可以在以下设置。
    location ~ .*\.(gif|jpg|png|css|js)(.*) {
        proxy_pass http://ip地址:90;
        proxy_redirect off;
        proxy_set_header host $host;
        proxy_cache cache_one;
        proxy_cache_valid 200 302 24h;
        proxy_cache_valid 301 30d;
        proxy_cache_valid any 5m;
        expires 90d;
        add_header wall "hey!guys!give me a star.";
    }
  }
ログイン後にコピー

  • proxy_pass nginx キャッシュからリソースを取得できません。アドレスはリクエストを転送し、取得します。新しいリソースを取得し、それをキャッシュします。

  • #proxy_redirect は、バックエンド サーバーの「location」応答ヘッダーと「refresh」応答ヘッダーの置換テキストを設定します。
  • proxy_set_header を使用すると、バックエンド サーバーに送信されるリクエスト ヘッダーを再定義または追加できます
  • proxy_cache は、http レイヤーによって設定された key_zone に対応する、ページ キャッシュに使用される共有メモリを指定します
  • proxy_cache_valid 応答ステータス コードごとに異なるキャッシュ時間を設定します
  • #キャッシュ時間の期限切れ

  • #ここでは、キャッシュ用の画像、CSS、JS 静的リソースを設定します。

    ユーザーがドメイン名を入力すると、解析によりip:portのアクセスアドレスが取得されます。ポートのデフォルトは 80 です。したがって、ページ要求は現在のサーバーによってインターセプトされ、処理されます。

上記ファイル名の末尾の静的リソースを解析すると、キャッシュ領域から静的リソースが取得されます。

対応するリソースが取得された場合は、データが直接返されます。


取得できない場合、リクエストは proxy_pass が指すアドレスに転送されて処理されます。

2.2.2 ソース サーバー

server {
    listen 90;
    server_name localhost;
    root /mnt/blog/;
    location / {
    }
  }
ログイン後にコピー

ここでは、ポート 90 で受信したリクエストが直接処理され、サーバーのローカル ディレクトリ/mnt/blog からリソースが取得されます。応答する。

3. キャッシュが有効かどうかを確認する方法

注意深い読者は、2 番目の段落にイースターエッグを残したことに気づくはずです add_header Wall "Hey !guys!give私はスターです。」 add_header は、ヘッダーにカスタマイズされた情報を設定するために使用されます。 したがって、キャッシュが有効であれば、静的リソースによって返されるヘッダーには確実にこの情報が含まれます。

アクセス結果は以下の通りです:

以上がnginx を使用して静的ファイルをサーバーにキャッシュする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート