Nginx は proxy_cache ディレクティブを使用して、静的リソースをキャッシュするようにリバース プロキシを設定します

シーン

CentOS7 で tar パッケージを解凍して Nginx をインストールします。

CentOS7_centos7のtarパッケージを解凍してNginxをインストールする方法 tarファイルのロード方法 - プログラマが探した

上記の手順を参考にNginxの構築と静的リソースのキャッシュ設定を実現してください。

上記のインストール ディレクトリは /opt/nginx ディレクトリにあり、ここでは /usr/local/nginx ディレクトリにあることに注意してください。

Nginx は静的リソースをキャッシュします

高性能 Web サーバーとして、nginx はリクエストをプロキシするときに静的リソースをキャッシュできます。

ユーザーが静的リソースをリクエストすると、nginx はまずローカル キャッシュ内でそれを検索します。リソースがキャッシュに存在する場合、

nginx はユーザーに直接返します。リソースがキャッシュに存在しない場合、nginx は上流サーバーからリソースを取得します。

その後、ローカル キャッシュに保存され、ユーザーに返されます。

Nginx サーバーには、md5 メソッドを使用する proxy_cache ディレクティブを使用して設定された一時的なキャッシュ構成もあります。

リクエストリンクをハッシュした後、特定の設定に従ってキャッシュファイルディレクトリが生成され、レスポンスデータが保存されます。

2 つの仮想マシンを準備し、2 つの Nginx サーバーをインストールして構成します。1 つの IP は Web キャッシュ サーバーとして 192.168.148.141 です。

もう 1 つは、コンテンツ ソース Web サーバーとしての 192.168.148.142 です。

注記:

ブログ:
Domineering Rogue Temperament_C#、アーキテクチャ ロード、SpringBoot-CSDN ブログ

成し遂げる

1. まず、Web キャッシュ サーバー 192.168.148.141 を設定します。

nginx.conf 構成ファイルを編集し、http ブロックに次の構成を追加します。

    #代理临时目录
    proxy_temp_path /usr/local/nginx/proxy_temp_dir;
    #Web缓存目录和参数设置
    proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1m max_size=500m;

ここで 2 つのパスに注意してください。nginx は /usr/local/nginx にインストールされているため、上に表示される 2 つのパスはこのパスに基づいて構成されており、次に従って構成する必要があります。

対応するパスに変更する必要があります。

上記で設定したコマンド

proxy_temp_path は、コンテンツ ソース サーバーから応答コンテンツを受信するときにキャッシュ サーバーが使用する一時ディレクトリを設定するために使用されます。

proxy_cache_path コマンドは、キャッシュ ディレクトリと関連パラメータの意味を設定するために使用されます。

/usr/local/nginx/proxy_cache_dir パラメーターは、ユーザー定義のキャッシュ ファイルの保存ディレクトリを示します。

レベルパラメータは、ハッシュ化されたリクエスト URL アドレスに基づいて作成されるキャッシュ ディレクトリの下の階層ディレクトリ構造を示し、ディレクトリ名はハッシュ化された文字列の末尾からインターセプトされます。

Keys_zone パラメータは、キャッシュ領域の名前とサイズを指定します。たとえば、cache_one:50m は、キャッシュ領域の名前が cache_one で、メモリ内のスペースが 50MB であることを意味します。

inactive パラメーターは、指定された時間内にアクセスされなかったキャッシュがアクティブにクリアされることを示します。たとえば、1m は 1 分以内にアクセスされなかったキャッシュをクリアし、1h は 1 時間を意味し、1d は 1 日を意味します。

max_size パラメータは、500m、10g など、指定されたディスク領域のサイズを示します。

Nginx がキャッシュする場合、最初に proxy_temp_path で指定された一時ディレクトリに書き込まれることに注意してください。

したがって、異なるファイル システム間でのディスク I/O の消費を避けるために、proxy_cache_path proxy_temp_path ディレクティブによって設定されたディレクトリを同じファイル システム内に置くことをお勧めします。

次に、サーバーブロックに一時キャッシュの関連構成を追加します。

​
    server {
        listen       80;
        server_name  192.168.148.141;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #增加两个响应头信息,用于获取访问的服务器地址与缓存是否成功
        add_header X-Via $server_addr;
        add_header X-Cache $upstream_cache_status;
        location / {
            #设置缓存区域名称
            proxy_cache cache_one;
            #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希
            proxy_cache_key $host$uri$is_args$args;
            #对不同的HTTP状态码设置不同的缓存时间
            proxy_cache_valid 200 10m;     #200缓存10分钟
            proxy_cache_valid 304 1m;      #304缓存1分钟
            proxy_cache_valid 301 302 1h;  #301 302缓存1小时
            proxy_cache_valid any 1m;      #其他未设置的状态码缓存1分钟
     #设置反向代理
            proxy_pass http://192.168.148.142;
    
        }

​

場所の追加に注意してください

詳細な構成:

proxy_cache はキャッシュ領域名の設定に使用されます。

proxy_cache_key はハッシュのキー値合成ルールを設定するために使用され、省略した場合、Nginx はデフォルトのキー値合成ルールを使用します。

proxy_cache_key 固有の組み込み変数の説明:

$host: サーバーのドメイン名。

$uri: ドメイン名とパラメータの間の部分。

$is_args: URL パラメーターがある場合、その値は何ですか? 、それ以外の場合は空の文字列。

$args: a=1&b=2 などの URL パラメータを保存します。パラメータがない場合は空の文字列になります。

proxy_cache_valid コマンドは、HTTP ステータス コードごとに異なるキャッシュ時間を設定します。コマンドの最初のパラメータはステータス コードを示し、2 番目のパラメータはキャッシュ時間を示します。

add_header ディレクティブは、ブラウザ側で正しくキャッシュされているかどうかを確認するために、2 つの応答ヘッダーを追加します。

X-Via は、組み込み変数 $server_addr を使用して取得されるサーバー アドレスを示し、もう 1 つの X-Cache は、組み込み変数 $upstream_cache_status を使用して取得されるリソース キャッシュのステータスを示します。

$upstream_cache_status の戻り値は 7 つあります。

HITはキャッシュヒットを意味します

MISS はミスを示し、リクエストはバックエンドに渡されます。

EXPIRED は、キャッシュの有効期限が切れ、リクエストがバックエンドに送信されたことを示します

UPDATING は、キャッシュが更新中であり、古い回答が使用されることを示します

STALE がバックエンド サーバーからキャッシュを更新できないことを示す場合、古いキャッシュ コンテンツが返されます。

BYPASS はキャッシュがバイパスされることを示します

REVALIDATED は、proxy_cache_revalidate コマンドが有効になった後、キャッシュされたコンテンツの有効期限が切れたときに、Nginx が If-Modified-Since リクエスト ヘッダーを通じてキャッシュされたコンテンツの有効期限が切れているかどうかを確認することを意味します。

このステータスが返されます。

知らせ:

ユーザーのリクエストについては、処理が成功した場合にのみ、add_header 命令によって設定された応答ヘッダーがブラウザの応答ヘッダーに表示されます。

2. アクセステスト

アクセス テストのために、コンテンツ ソース サーバー 192.168.148.142 にいくつかのテスト ファイルを配置します。

ここではnginxで使用されるデフォルト設定なので、ファイルを/usr/local/nginx/htmlディレクトリにアップロードします。

たとえば、ここで新しい badao.html を作成します。

<h1>192.168.148.142/badao.html!</h1>

次に、2 つのサーバーの nginx を起動し、ブラウザでアクセスします。

http://192.168.148.141/badao.html

このとき、ブラウジング開発ツールを開き、ネットワーク - bdao.html をクリックし、応答ヘッダーを見つけて、X-Via と X-Cache の値を確認すると、現時点では MISS であることがわかります

1分以内の2回目のリクエストでHIT

このとき、キャッシュサーバー192.168.148.141に設定されているキャッシュディレクトリ/usr/local/nginx/proxy_cache_dirを確認し、

 

キャッシュファイルが見える。ここでは、tree コマンドを使用して表示します

コマンドを渡す必要があります

yum -y install tree

インストール後にのみ使用できます。

詳細な検証のために、141 でのリクエスト後、142 の対応するファイルの名前がす​​ぐに変更されますが、1 分以内にキャッシュを通じて 141 を取得できます。

キャッシュの有効期限が切れた後に再度アクセスすると、404 というプロンプトが表示されます。

 

おすすめ

転載: blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/132104697