×ðÁú¿­Ê±

NginxÊðÀí»º´æ¸üÐÂÉèÖà £¬ÊµÊ±ÏìÓ¦ÍøÕ¾ÄÚÈÝת±ä

nginxÊðÀí»º´æ¸üÐÂÉèÖà £¬ÊµÊ±ÏìÓ¦ÍøÕ¾ÄÚÈÝת±ä

СÐò£º

Ëæ×ÅÍøÕ¾»á¼ûÁ¿µÄÒ»Ö±ÔöÌí £¬ÔõÑùÌá¸ßÍøÕ¾µÄÐÔÄܳÉΪÁËÒ»¸öÖ÷ÒªµÄÎÊÌâ¡£Nginx×÷ΪһÖÖ¸ßÐÔÄܵÄHTTPЧÀÍÆ÷ºÍ·´ÏòÊðÀíЧÀÍÆ÷ £¬ÊðÀí»º´æÊÇÆäÖеÄÒ»¸öÖ÷Òª×é³É²¿·Ö¡£ÔÚÒ»Ñùƽ³£ÔËάÖÐ £¬¾­³£ÐèÒª¶ÔÍøÕ¾¾ÙÐÐÄÚÈݵĸüкÍÐÞ¸Ä £¬¶øͬʱ¼á³ÖÓû§»á¼ûʱµÄÏìÓ¦ËÙÂÊ¡£±¾ÎĽ«ÏÈÈÝÔõÑùÔÚNginxÖÐÉèÖÃÊðÀí»º´æ £¬²¢ÇÒÈÃÆäÄܹ»ÊµÊ±ÏìÓ¦ÍøÕ¾ÄÚÈݵÄת±ä¡£

ÉèÖÃ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Ϊ»º´æµÄ²»»îԾʱ¼ä¡£

ÔÚserver¶ÎÖеÄlocation²¿·Ö £¬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

µÇ¼ºó¸´ÖÆ

ÔÚÉÏÊöʾÀý´úÂëÖÐ £¬Í¨¹ýÉèÖÃX-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ÖÐÉèÖÃÊðÀí»º´æ £¬²¢ÇÒʵʱÏìÓ¦ÍøÕ¾ÄÚÈݵÄת±ä¡£ÕâÑù¿ÉÒÔÌá¸ßÍøÕ¾µÄÐÔÄÜ £¬Í¬Ê±ÓÖÄܹ»¿ìËÙ¸üкÍÐÞ¸ÄÍøÕ¾ÄÚÈÝ¡£

ËäÈ» £¬ÔÚÏÖʵӦÓÃÖл¹¿ÉÄÜÐèҪ˼Á¿»º´æµÄʧЧսÂÔ¡¢¸ß¿ÉÓÃÐÔÒÔ¼°Çå¾²µÈÒòËØ¡£ÔÚÏêϸÉèÖÃʱ £¬ÐèҪƾ֤ÏÖʵÐèÇó¾ÙÐе÷½â¡£Ï£Íû±¾ÎĶÔѧϰºÍÏàʶNginxÊðÀí»º´æ¸üÐÂÉèÖÃÓÐËù×ÊÖú¡£

ÒÔÉϾÍÊÇNginxÊðÀí»º´æ¸üÐÂÉèÖà £¬ÊµÊ±ÏìÓ¦ÍøÕ¾ÄÚÈÝת±äµÄÏêϸÄÚÈÝ £¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí £¬°æȨÕùÒéÓë±¾Õ¾ÎÞ¹Ø £¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í×ðÁú¿­Ê±ÂËÓÍ»úÍø¹Ù·½Ì¬¶È £¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ £¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢ £¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢ £¬ÇëÄúÁ¬Ã¦ÁªÏµ×ðÁú¿­Ê±ÊµÊ±ÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ×ðÁú¿­Ê±

13452372176

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎå £¬9:30-18:30 £¬½ÚãåÈÕÐÝÏ¢

QR code
¡¾ÍøÕ¾µØͼ¡¿¡¾sitemap¡¿