>운영 및 유지보수 >엔진스 >웹사이트 콘텐츠 변경에 실시간으로 대응하는 Nginx 프록시 캐시 업데이트 구성

웹사이트 콘텐츠 변경에 실시간으로 대응하는 Nginx 프록시 캐시 업데이트 구성

王林
王林원래의
2023-07-07 08:06:091731검색

Nginx 프록시 캐시 업데이트 구성, 웹 사이트 콘텐츠 변경에 대한 실시간 대응

소개:
웹 사이트 방문 횟수가 증가함에 따라 웹 사이트 성능을 어떻게 향상시킬 수 있는지가 중요한 문제가 되었습니다. Nginx는 고성능 HTTP 서버이자 역방향 프록시 서버이며, 프록시 캐싱은 그 중 중요한 부분입니다. 일상적인 운영 및 유지 관리에서는 사용자가 웹 사이트에 액세스할 때 응답 속도를 유지하면서 웹 사이트의 콘텐츠를 업데이트하고 수정해야 하는 경우가 많습니다. 이 기사에서는 Nginx에서 프록시 캐싱을 구성하고 웹 사이트 콘텐츠의 변경 사항에 실시간으로 응답할 수 있도록 하는 방법을 소개합니다.

  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_cache_path指定了缓存文件的存储路径和相关参数。levels=1:2表示缓存路径的层次深度,keys_zone为缓存名称和大小限制,max_size为缓存的最大大小,inactive为缓存的不活跃时间。

在server段中的location部分,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

    在上述示例代码中,通过设置X-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

서버 세그먼트의 위치 부분에서 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 헤더를 설정하여 캐시 업데이트를 트리거할 수 있습니다. 예는 다음과 같습니다.

    rrreee🎜위 예제 코드에서 X-Cache-Bypass 헤더를 1로 설정하면 Nginx에게 프록시 캐시의 캐시를 우회하여 최신 정보를 얻도록 지시할 수 있습니다. 콘텐츠를 실시간으로 . 🎜🎜🎜🎜캐시 업데이트 자동 트리거🎜캐시 업데이트를 수동으로 트리거하는 것 외에도 예약된 작업이나 웹후크를 사용하여 캐시 업데이트를 자동으로 트리거할 수도 있습니다. 다음은 Python의 웹 프레임워크인 Flask 및 Celery를 사용하는 샘플 코드입니다. 🎜rrreee🎜위의 예에서는 Flask를 사용하여 POST 요청을 통해 캐시 업데이트를 트리거하는 간단한 인터페이스 /update_cache를 만들었습니다. 요청을 받은 후 Celery를 사용하여 캐시 업데이트 작업을 비동기적으로 수행하고 해당 결과를 반환합니다. 🎜🎜🎜🎜결론: 🎜위 구성과 샘플 코드를 통해 Nginx에서 프록시 캐싱을 구성하고 웹 사이트 콘텐츠 변경에 실시간으로 대응할 수 있습니다. 이를 통해 사이트 콘텐츠를 빠르게 업데이트하고 수정할 수 있으면서 사이트 성능이 향상됩니다. 🎜🎜물론 실제 응용에서는 캐시 무효화 전략, 고가용성, 보안 등의 요소도 고려해야 할 수 있습니다. 세부 구성 중에는 실제 필요에 따라 조정이 이루어져야 합니다. 이 기사가 Nginx 프록시 캐시 업데이트 구성을 배우고 이해하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 웹사이트 콘텐츠 변경에 실시간으로 대응하는 Nginx 프록시 캐시 업데이트 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.