ホームページ 運用・保守 Nginx nginx を使用して静的ファイルをサーバーにキャッシュする方法

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

May 15, 2023 pm 11:37 PM
nginx

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

Nginxバージョンを確認する方法 Nginxバージョンを確認する方法 Apr 14, 2025 am 11:57 AM

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

Windowsでnginxを構成する方法 Windowsでnginxを構成する方法 Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Docker用のコンテナを作成する方法 Docker用のコンテナを作成する方法 Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

Dockerによってコンテナを起動する方法 Dockerによってコンテナを起動する方法 Apr 15, 2025 pm 12:27 PM

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

See all articles