Nginx reverse proxy cache refresh configuration, real-time update of website static resources
Introduction:
In Web development, static resources are an indispensable part of the website. However, static resources that are frequently updated may cause users to see old versions during access or load slowly. An effective way to solve this problem is to use Nginx's reverse proxy caching function and configure it to update the static resources of the website in real time. This article will introduce how to achieve this function through Nginx configuration.
Enable reverse proxy cache:
First, we need to enable reverse proxy cache in Nginx configuration. Find the Nginx configuration file (usually nginx.conf) and open it, then find the http section and add the following configuration:
http { proxy_cache_path /path/to/cache/directory levels=1:2 keys_zone=cache_zone:10m max_size=10g inactive=60m; proxy_temp_path /path/to/temporary/directory; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_ignore_headers "Cache-Control" "Expires"; proxy_cache_valid any 10m; proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; server { ... location / { proxy_cache cache_zone; proxy_pass http://backend-server; } ... } }
Description:
proxy_cache_path
: Set the reverse proxy cache path and related configurations. levels
is the directory level, keys_zone
is the name and size of the cache area, max_size
sets the maximum size of the cache, inactive
specifies the cache timeout . proxy_temp_path
: Set the temporary directory path. proxy_cache_key
: Variable used to generate cache key, $scheme represents the request protocol, $request_method represents the request method, $host represents the host name of the request, and $request_uri represents the URI of the request. proxy_ignore_headers
: Specify the response headers that need to be ignored. proxy_cache_valid
: Set the cache validity time. proxy_cache_use_stale
: Defines the circumstances under which stale cache is allowed to be used when updating the cache. In the background program or script, when the static resources are updated, issue an HTTP request to refresh the cache:
import requests def refresh_cache(): url = "http://your-nginx-server/purge-url" headers = {"Host": "your-hostname"} response = requests.get(url, headers=headers) if response.status_code == 200: print("Cache refreshed successfully!") else: print("Failed to refresh cache.")
In the Nginx configuration file, Configure address routing and cache refresh:
location ~ /purge-url { internal; proxy_cache_purge cache_zone "$scheme$request_method$host$request_uri$is_args$args"; }
Description:
location
: Configure the route for processing cache refresh requests. internal
: Indicates that the route can only be accessed by internal requests and cannot be accessed by external requests. proxy_cache_purge
: Configure the cache area to be refreshed and related parameters. With the above configuration, when issuing a GET request with X-Purge-Cache: 1
to http://your-nginx-server/purge-url
, Nginx will refresh the corresponding cache according to the requested URI.
X-Purge-Cache: 1
ask. If the cache is refreshed successfully, when accessing the corresponding static resource again, the latest version will be obtained from the backend server and the cache will be updated to ensure that the user sees the latest static resource. Conclusion:
Through Nginx's reverse proxy cache configuration and real-time refresh of static resources, we can improve the performance and access speed of the website, and ensure that users can obtain the latest static resources in real time resource. This is especially important for websites that are frequently updated. It can also reduce the pressure on the back-end server and improve the stability and reliability of the website. I hope this introduction will be helpful to you!
The above is the detailed content of Nginx reverse proxy cache refresh configuration and update website static resources in real time. For more information, please follow other related articles on the PHP Chinese website!