nginxのキャッシュはじめに
ウェブサイトのために、私たちはバックエンドサーバーに到達するたびに、サーバーは、この目的のために巨大な圧力をもたらす場合には、コンテンツの多くは、頻繁にアクセスしたユーザの内容のトラフィックの増加、で、あるアンチの使用が含まれていますバックエンドサーバーのリソースを節約するより助長プロキシサーバへのアクセス頻度の内容をキャッシュします。nginxのウェブキャッシングは、一方が他方の一時キャッシュされ、永続的なキャッシュで、2つの方法を提供します。
Webサーバとクライアントの間に位置したWebキャッシュサーバのキャッシング情報コンテンツソース、ユーザーがURLクライアントにアクセスしたときに、Webキャッシュサーバは、対応するコンテンツソースのWebサーバに要求し、メモリやディスク、および次の時間に応じて、アクセスが同じURLであれば、要求は、ウェブキャッシュサーバは、再度、コンテンツソースのWebサーバーにアクセスすることなく、コンテンツをクライアントにキャッシュされた出力を、指示するとき。
キャッシュサーバを使用すると、効果的にユーザーのアクセス速度を向上させるためにオリジンサーバとコンテンツデータベースの負荷を軽減することができます。
nginxの設定キャッシングサービス
永続キャッシュ
proxy_store命令は、nginxのは、手動でファイルが有効のままキャッシュを削除しない場合は、ローカルファイルへのコンテンツキャッシュサーバ応答のコンテンツソースを提供するために使用することができます。したがって、この方法は、ほとんど変化のキャッシュサイトの永続的なキャッシュの内容に適用されます。
location / {
root cache;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path cache_tmp;
proxy_pass http://59.110.171.154;
}
ターゲット・サーバーの応答の結果ファイルの最初の行がルートディレクトリキャッシュnginxの中で保存され、第二は、キャッシュ・ラインを開くことですされ、三行目は、キャッシュファイルへのアクセス、キャッシュファイルの場所の行動の第四世代、第四逆の動作です薬。
アクセスした後、キャッシュディレクトリは、次のように:
これら二つの文書は、単にターゲットサーバから返された結果であり、
root@iZ2ze488eeqkbsq8cxntxbZ logs]# tail -20f access.log
94.191.112.250 - - [03/Sep/2019:21:13:16 +0800] "GET /WWW/phpMyAdmin/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:16 +0800] "GET /phpMyAdmln/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:17 +0800] "GET /program/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:17 +0800] "GET /shopdb/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:17 +0800] "GET /phppma/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:18 +0800] "GET /phpmy/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:18 +0800] "GET /mysql/admin/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:19 +0800] "GET /mysql/dbadmin/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:19 +0800] "GET /mysql/sqlmanager/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:20 +0800] "GET /mysql/mysqlmanager/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:20 +0800] "GET /wp-content/plugins/portable-phpmyadmin/wp-pma-mod/index.php HTTP/1.0" 404 153 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:28.0) Gecko/20100101 Firefox/28.0"
94.191.112.250 - - [03/Sep/2019:21:13:20 +0800] "GET /manager/html HTTP/1.0" 404 555 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
94.191.112.250 - - [03/Sep/2019:21:17:21 +0800] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
94.191.112.250 - - [03/Sep/2019:21:22:24 +0800] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
124.89.2.70 - - [03/Sep/2019:21:24:50 +0800] "GET / HTTP/1.1" 200 628 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
124.89.2.70 - - [03/Sep/2019:21:24:57 +0800] "GET /demo.html HTTP/1.1" 200 16 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
124.89.2.70 - - [03/Sep/2019:21:25:02 +0800] "GET /demo2.html HTTP/1.1" 200 22 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
94.191.112.250 - - [03/Sep/2019:21:25:12 +0800] "GET / HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
94.191.112.250 - - [03/Sep/2019:21:25:18 +0800] "GET /demo.html HTTP/1.0" 200 16 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
94.191.112.250 - - [03/Sep/2019:21:25:24 +0800] "GET /demo2.html HTTP/1.0" 200 22 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
94.191.112.250 - - [03/Sep/2019:21:29:17 +0800] "GET /demo2.html HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
送信先サーバのアクセスログを確認するか、発見が要求を転送し、ローカルキャッシュを使用していませんでした
その理由は単純で、ローカルキャッシュを使用する場合、単に上記の構成キャッシュ、キャッシュされたレスポンスを開いて、それでも要求は転送されます満たし、また次の設定を追加する必要があります
location / {
root cache;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path cache_tmp;
if (!-e $request_filename){
proxy_pass http://59.110.171.154;
}
}
上記の式!-eがあった場合に、その要求を転送する、ファイルが存在するかどうかを確認することを意味します。
キャッシュの使用の成功は、ターゲットサーバは要求を受信していません。
PS:nginxのキャッシュは永続的なファイルストレージに基づいて、時には速度に比べRedisのキャッシュサーバを使用しているにも遅くなることがあります。
一時キャッシュ
そこハッシュ後のアルゴリズムMD5の接続要求を使用していますproxy_cache一時キャッシュ命令セットを使用して、nginxのサーバーの設定、保存されたデータに応答して、キャッシュファイルのディレクトリを生成するために応じて特定の構成。
proxy_temp_path /root/local/nginx/proxy_temp_dir;
proxy_cache_path /root/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1m max_size=500m;
ターゲットサーバを設定すると、一時ディレクトリおよびWebキャッシュディレクトリおよびパラメータ設定にファイルを返します。
レベル:ハッシュを作成した後、URLアドレスを要求し、キャッシュディレクトリ内の階層を表します。
指定されたバッファ領域50MのCache_one名とサイズ:keys_zone
非アクティブ:キャッシュアクティブ空は、1分の代わりに指定された時間の1メートル以内にアクセスされていません
MAX_SIZE:最大キャッシュサイズを指定します。
その後、一時的なキャッシュ・コヒーレンシブロックに配置されたサーバーを追加
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
location / {
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 10m;
proxy_cache_valid 304 1m;
proxy_cache_valid any 1m;
proxy_pass http://59.110.171.154;
}
最初のラインバッファは、名前のために提供され、ラインがキャッシュ時間異なるステータスコードを設定後ろ、第二行のキーのルールを設定します。
この時点で、一時的なキャッシュ構成は完了です。