ホームページ  >  記事  >  運用・保守  >  Web サイトのコンテンツの変更にリアルタイムで対応するための Nginx プロキシ キャッシュ更新構成

Web サイトのコンテンツの変更にリアルタイムで対応するための Nginx プロキシ キャッシュ更新構成

王林
王林オリジナル
2023-07-07 08:06:091615ブラウズ

Nginx プロキシ キャッシュの更新構成、Web サイトのコンテンツ変更に対するリアルタイムの応答

はじめに:
Web サイトへのアクセス数が継続的に増加する中、Web サイトのパフォーマンスをいかに向上させるかが重要な問題となっています。 Nginx は高性能 HTTP サーバーおよびリバース プロキシ サーバーであり、プロキシ キャッシュはその重要な部分です。日々の運用・保守においては、ユーザーがアクセスした際の応答速度を維持しながら、Webサイトの内容を更新・修正することが必要になることがよくあります。この記事では、Nginx でプロキシ キャッシュを構成し、Web サイトのコンテンツの変更にリアルタイムで対応できるようにする方法を紹介します。

  1. 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 ヘッダーを設定します。

  1. 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 に指示できます。リアルタイムの最新コンテンツを取得します。

  2. キャッシュ更新を自動的にトリガーする
    キャッシュ更新を手動でトリガーするだけでなく、スケジュールされたタスクまたは 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 サイトの他の関連記事を参照してください。

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