Bird
Raised Fist0
Nginxdevops~5 mins

Purging cached content in Nginx - Commands & Configuration

Choose your learning style10 modes available
Introduction
Sometimes cached content in Nginx becomes outdated and needs to be removed so users get fresh content. Purging cached content means deleting stored files so Nginx fetches new versions from the source.
When you update a website but users still see old pages due to caching
When you fix a bug in a cached resource and want the fix to appear immediately
When you want to clear cache for a specific URL without restarting Nginx
When you want to free disk space used by old cached files
When you want to test changes to your site without cached interference
Config File - nginx.conf
nginx.conf
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=60m use_temp_path=off;

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_cache my_cache;
        proxy_pass http://backend_server;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
    }

    location ~ /purge(/.*) {
        allow 127.0.0.1;
        deny all;
        proxy_cache_purge my_cache $scheme$host$1;
    }
}

This configuration sets up a cache named my_cache stored in /var/cache/nginx. The location / block enables caching for normal requests. The location ~ /purge(/.*) block allows purging cached content by sending requests to URLs starting with /purge. Only localhost (127.0.0.1) can purge cache for security.

Commands
This command sends a PURGE request to Nginx to delete the cached content for the URL /path/to/cached/resource. It uses localhost because the purge location only allows local requests.
Terminal
curl -X PURGE http://localhost/purge/path/to/cached/resource
Expected OutputExpected
HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 7 Purged
This command checks the headers of the resource after purging to confirm that Nginx fetches a fresh copy instead of serving cached content.
Terminal
curl -I http://localhost/path/to/cached/resource
Expected OutputExpected
HTTP/1.1 200 OK Server: nginx Date: Thu, 01 Jun 2023 12:00:00 GMT Content-Type: text/html Content-Length: 1234 Last-Modified: Thu, 01 Jun 2023 11:59:00 GMT X-Cache-Status: MISS
→
-I - Fetch only HTTP headers without body
Key Concept

If you remember nothing else from this pattern, remember: purging cache deletes stored files so Nginx serves fresh content on next request.

Common Mistakes
Trying to purge cache from a remote IP not allowed in the config
Nginx denies purge requests from unauthorized IPs for security, so the purge fails.
Send purge requests only from allowed IPs like localhost or update config to allow your IP.
Using GET or POST instead of PURGE method to clear cache
Nginx only recognizes PURGE method in the purge location to delete cache.
Use the PURGE HTTP method explicitly with curl or other tools.
Not configuring proxy_cache_purge directive in nginx.conf
Without proxy_cache_purge, Nginx does not know how to remove cached files on PURGE requests.
Add proxy_cache_purge directive with correct cache zone and key.
Summary
Configure Nginx with proxy_cache_path and proxy_cache_purge to enable cache purging.
Send PURGE HTTP requests to the special purge location to delete cached content.
Verify cache is cleared by checking response headers show a cache MISS.

Practice

(1/5)
1. What is the main purpose of purging cached content in nginx?
easy
A. To remove specific cached files so fresh content is served
B. To increase the cache size automatically
C. To disable caching completely
D. To restart the nginx server

Solution

  1. Step 1: Understand caching in nginx

    Caching stores copies of content to serve faster responses.
  2. Step 2: Understand purging purpose

    Purging removes specific cached files to update content without restarting nginx.
  3. Final Answer:

    To remove specific cached files so fresh content is served -> Option A
  4. Quick Check:

    Purging = Remove cached files [OK]
Hint: Purging means deleting cached files to refresh content [OK]
Common Mistakes:
  • Confusing purging with disabling cache
  • Thinking purging restarts nginx
  • Assuming purging increases cache size
2. Which of the following is the correct syntax to enable cache purging in an nginx location block?
easy
A. proxy_cache_purge true;
B. proxy_cache_purge off;
C. proxy_cache_purge enable;
D. proxy_cache_purge mycache;

Solution

  1. Step 1: Recall nginx directive syntax

    Directives use the format: directive_name value; with zone name for cache purging.
  2. Step 2: Identify correct value for enabling purge

    Enabling uses zone name 'mycache' not 'enable', 'true', or 'off'.
  3. Final Answer:

    proxy_cache_purge mycache; -> Option D
  4. Quick Check:

    Enable purge = proxy_cache_purge mycache; [OK]
Hint: Use the zone name to enable cache purging in nginx [OK]
Common Mistakes:
  • Using 'enable' or 'true' instead of the zone name
  • Forgetting the semicolon at the end
  • Setting proxy_cache_purge to 'off' by mistake
3. Given this nginx config snippet:
location /purge/ {
    allow 192.168.1.0/24;
    deny all;
    proxy_cache_purge mycache;
}

What happens when a client from IP 192.168.1.10 sends a PURGE request to /purge/page1?
medium
A. The cached content for /purge/page1 is removed
B. The request is denied due to IP restriction
C. The cache is cleared for all pages
D. The server returns a 404 error

Solution

  1. Step 1: Check IP access rules

    Allow 192.168.1.0/24 means IP 192.168.1.10 is allowed; others denied.
  2. Step 2: Understand proxy_cache_purge mycache

    Enables purging cached content for matching requests.
  3. Final Answer:

    The cached content for /purge/page1 is removed -> Option A
  4. Quick Check:

    Allowed IP + PURGE request = cache removed [OK]
Hint: Allowed IP + PURGE request = cache cleared for that URL [OK]
Common Mistakes:
  • Assuming all IPs can purge
  • Thinking PURGE clears entire cache
  • Confusing PURGE with GET request
4. You configured nginx to purge cache with:
location /purge/ {
    deny all;
    proxy_cache_purge mycache;
}

But PURGE requests still return 403 Forbidden. What is the likely cause?
medium
A. Cache is empty so purge fails
B. proxy_cache_purge directive is misspelled
C. Missing allow/deny rules to permit purge requests
D. PURGE method is not supported by nginx

Solution

  1. Step 1: Understand default access control

    Without 'allow', nginx denies all due to 'deny all;' for security.
  2. Step 2: Check purge access rules

    To allow PURGE requests, you must explicitly allow trusted IPs.
  3. Final Answer:

    Missing allow/deny rules to permit purge requests -> Option C
  4. Quick Check:

    deny all without allow = 403 Forbidden on PURGE [OK]
Hint: Always add allow/deny for purge locations [OK]
Common Mistakes:
  • Assuming PURGE method is unsupported
  • Ignoring access control rules
  • Thinking empty cache causes 403
5. You want to purge cached content only for URLs starting with /images/ and restrict purge access to IP 10.0.0.5. Which nginx config snippet correctly achieves this?
hard
A. location /images/ { proxy_cache_purge mycache; allow 10.0.0.5; deny all; }
B. location /purge/images/ { proxy_cache_purge mycache; allow 10.0.0.5; deny all; }
C. location /images/ { proxy_cache mycache; allow 10.0.0.5; deny all; }
D. location /purge/ { proxy_cache_purge mycache; allow all; }

Solution

  1. Step 1: Identify purge location for /images/ URLs

    Purging usually uses a separate location like /purge/images/ to trigger cache removal.
  2. Step 2: Check access control and purge directive

    Allow only IP 10.0.0.5 and deny others with proxy_cache_purge mycache enabled.
  3. Final Answer:

    location /purge/images/ { proxy_cache_purge mycache; allow 10.0.0.5; deny all; } -> Option B
  4. Quick Check:

    Correct purge path + access control = location /purge/images/ { proxy_cache_purge mycache; allow 10.0.0.5; deny all; } [OK]
Hint: Use a purge-specific location with allow/deny for security [OK]
Common Mistakes:
  • Enabling purge in wrong location
  • Using proxy_cache instead of proxy_cache_purge
  • Allowing all IPs to purge
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard