Nginx プロキシ キャッシュの更新構成、Web サイトのコンテンツ変更に対するリアルタイムの応答
はじめに:
Web サイトへのアクセス数が継続的に増加する中、Web サイトのパフォーマンスをいかに向上させるかが重要な問題となっています。 Nginx は高性能 HTTP サーバーおよびリバース プロキシ サーバーであり、プロキシ キャッシュはその重要な部分です。日々の運用・保守においては、ユーザーがアクセスした際の応答速度を維持しながら、Webサイトの内容を更新・修正することが必要になることがよくあります。この記事では、Nginx でプロキシ キャッシュを構成し、Web サイトのコンテンツの変更にリアルタイムで対応できるようにする方法を紹介します。
Nginx プロキシ キャッシュを構成する
Nginx 構成ファイルで、プロキシ キャッシュを有効にするために次の構成を追加する必要があります:
http { proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_cache my_cache; proxy_cache_key $scheme$host$request_uri; proxy_cache_valid 200 304 12h; proxy_cache_use_stale updating; proxy_ignore_headers Cache-Control; } } }
上記の構成では、 proxy_cache_path
キャッシュ ファイルのストレージ パスと関連パラメータを指定します。 levels=1:2
はキャッシュ パスの階層の深さを表し、keys_zone
はキャッシュの名前とサイズ制限、max_size
はキャッシュの最大サイズ、 inactive
はキャッシュの非アクティブ時間です。
サーバー セグメントの場所の部分で、proxy_pass
はバックエンド サービスのアドレスを指定し、proxy_cache
は使用されるキャッシュ名を指定します, proxy_cache_key
はキャッシュ キーの値を定義し、proxy_cache_valid
は応答コード 200 および 304 のリクエストの有効期間を設定し、proxy_cache_use_stale
は更新時に古いキャッシュを使用するかどうかを指定しますキャッシュ キャッシュされたコンテンツの場合、proxy_ignore_headers
は無視される HTTP ヘッダーを設定します。
Nginx の proxy_cache_bypass ディレクティブを使用してリアルタイムでキャッシュを更新する
Nginx は、リアルタイムでキャッシュを更新するために使用できる proxy_cache_bypass
ディレクティブを提供します。バックエンド サービスが応答したときに、対応する HTTP ヘッダーを設定することで、キャッシュの更新をトリガーできます。以下に例を示します。
import requests def update_cache(url): headers = { 'X-Cache-Bypass': '1', } response = requests.get(url, headers=headers) return response.text
上記のコード例では、XX-Cache-Bypass
ヘッダーを 1 に設定することで、プロキシ キャッシュ内のキャッシュをバイパスするように Nginx に指示できます。リアルタイムの最新コンテンツを取得します。
キャッシュ更新を自動的にトリガーする
キャッシュ更新を手動でトリガーするだけでなく、スケジュールされたタスクまたは Webhook を使用してキャッシュ更新を自動的にトリガーすることもできます。以下は、Python の Web フレームワークである Flask と Celery を使用したサンプル コードです。
from flask import Flask, request from celery import Celery app = Flask(__name__) celery = Celery(app.name, broker='redis://localhost:6379/0') @app.route('/update_cache', methods=['POST']) def update_cache(): url = request.form.get('url') result = celery.send_task('tasks.update_cache', args=[url]) return 'Task submitted' @celery.task def update_cache(url): headers = { 'X-Cache-Bypass': '1', } response = requests.get(url, headers=headers) return response.text if __name__ == '__main__': app.run()
上の例では、Flask を使用して単純なインターフェイス /update_cache
を作成し、更新の POST リクエストを通じてキャッシュをトリガーしました。 。リクエストを受信した後、Celery を使用してキャッシュ更新タスクを非同期に実行し、対応する結果を返します。
結論:
上記の構成とサンプル コードを通じて、Nginx でプロキシ キャッシュを構成し、Web サイト コンテンツの変更にリアルタイムで対応できます。これにより、サイトのパフォーマンスが向上し、サイト コンテンツの迅速な更新と変更が可能になります。
もちろん、実際のアプリケーションでは、キャッシュ無効化戦略、高可用性、セキュリティなどの要素も考慮する必要がある場合があります。詳細な構成時には、実際のニーズに応じて調整を行う必要があります。この記事が、Nginx プロキシ キャッシュの更新構成を学び理解するのに役立つことを願っています。
以上がWeb サイトのコンテンツの変更にリアルタイムで対応するための Nginx プロキシ キャッシュ更新構成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。