📖 Scenario: You are managing a web server using Nginx. To improve performance, you want to cache responses from your backend server. However, you need to control when the cached content is considered valid or stale.This project will guide you through setting up cache validity rules in Nginx configuration.
🎯 Goal: Build an Nginx configuration that sets up a cache zone and defines cache validity rules to control how long responses are cached based on HTTP status codes.
📋 What You'll Learn
Create a cache zone named my_cache with 10MB of storage
Set cache validity for HTTP status 200 to 5 minutes
Set cache validity for HTTP status 404 to 1 minute
Set cache validity for HTTP status 500 to 30 seconds
Print the final Nginx configuration snippet
💡 Why This Matters
🌍 Real World
Web servers often cache responses to speed up delivery and reduce load. Cache validity rules ensure users get fresh content when needed.
💼 Career
DevOps engineers and system administrators configure Nginx caching to optimize web performance and reliability.
Progress0 / 4 steps
1
Create a cache zone
Create a cache zone named my_cache with 10m of storage in the http block.
Nginx
Hint
Use proxy_cache_path directive with keys_zone=my_cache:10m inside the http block.
2
Add cache validity rules
Inside the http block, add a proxy_cache_valid directive to set cache validity for HTTP status 200 to 5m.
Nginx
Hint
Use proxy_cache_valid 200 5m; to set cache validity for status 200.
3
Add more cache validity rules
Add proxy_cache_valid directives inside the http block to set cache validity for HTTP status 404 to 1m and for HTTP status 500 to 30s.
Nginx
Hint
Add proxy_cache_valid 404 1m; and proxy_cache_valid 500 30s; inside the http block.
4
Print the final Nginx cache configuration
Print the complete http block configuration with the cache zone and all cache validity rules.
Nginx
Hint
Use print statements to output each line of the configuration exactly as shown.
Practice
(1/5)
1. What does the proxy_cache_valid directive in nginx control?
easy
A. The size limit of the cache storage
B. The format of cached files on disk
C. The IP addresses allowed to access the cache
D. How long cached content is considered fresh and valid
Solution
Step 1: Understand the purpose of proxy_cache_valid
This directive sets the time duration for which cached responses are considered fresh and can be served without revalidation.
Step 2: Differentiate from other cache settings
It does not control cache size, access permissions, or file formats, only the validity time of cached content.
Final Answer:
How long cached content is considered fresh and valid -> Option D
Quick Check:
Cache validity = duration freshness [OK]
Hint: Cache validity means freshness time of cached content [OK]
Common Mistakes:
Confusing cache size with cache validity
Thinking it controls access permissions
Assuming it changes file storage format
2. Which of the following is the correct syntax to set cache validity for HTTP 200 responses to 10 minutes in nginx?
easy
A. proxy_cache_valid 200 = 10m;
B. proxy_cache_valid 10m 200;
C. proxy_cache_valid 200 10m;
D. proxy_cache_valid 10m;
Solution
Step 1: Recall the syntax format
The correct syntax is proxy_cache_valid <code> <time>; where status code comes first, then time.
Step 2: Check each option
proxy_cache_valid 200 10m; matches the correct order: status code 200 followed by 10 minutes (10m). Others have wrong order or extra symbols.
Final Answer:
proxy_cache_valid 200 10m; -> Option C
Quick Check:
Status code then time = correct syntax [OK]
Hint: Status code first, then time duration in proxy_cache_valid [OK]
What happens when a cached 404 response is requested after 2 minutes?
medium
A. The cached 404 is served from cache
B. The cached 404 is considered expired and revalidated
C. The cache is cleared automatically
D. The server returns a 500 error
Solution
Step 1: Understand cache validity times
404 responses are cached for 1 minute. After 2 minutes, the cached 404 is expired.
Step 2: Determine behavior after expiration
Expired cache triggers revalidation or fetching fresh response, so cached 404 is not served directly.
Final Answer:
The cached 404 is considered expired and revalidated -> Option B
Quick Check:
Cache expired after 1m, so revalidation needed [OK]
Hint: Cache expires after set time, then revalidation occurs [OK]
Common Mistakes:
Assuming cache serves expired content
Thinking cache clears automatically after expiry
Confusing 404 cache with 200 cache time
4. You set proxy_cache_valid 200 10m; but cached responses are never served from cache. What is the likely error?
medium
A. The cache zone is not defined or enabled
B. The time format '10m' is invalid
C. The status code 200 is incorrect for caching
D. The directive must be inside http block only
Solution
Step 1: Check cache zone setup
Without defining and enabling a cache zone, caching won't work even if proxy_cache_valid is set.
Step 2: Validate other options
Time format '10m' is valid, status code 200 is correct, and directive can be inside server or location blocks too.
Final Answer:
The cache zone is not defined or enabled -> Option A
Quick Check:
Cache zone missing disables caching [OK]
Hint: Define and enable cache zone before setting cache validity [OK]
Common Mistakes:
Ignoring cache zone definition
Misreading time format as invalid
Assuming directive location is restricted
5. You want to cache HTTP 200 responses for 15 minutes, HTTP 404 for 2 minutes, and all other responses for 5 minutes. Which nginx config snippet correctly applies these cache validity rules?
hard
A. proxy_cache_valid 200 15m;
proxy_cache_valid 404 2m;
proxy_cache_valid 5m;
B. proxy_cache_valid 200 15m;
proxy_cache_valid 404 2m;
proxy_cache_valid any 5m;
C. proxy_cache_valid 200 15m;
proxy_cache_valid 404 2m;
proxy_cache_valid 1 5m;
D. proxy_cache_valid 200 15m;
proxy_cache_valid 404 2m;
proxy_cache_valid 0 5m;
Solution
Step 1: Set specific status codes first
HTTP 200 and 404 have explicit cache times set correctly in all options.
Step 2: Use no status code to match all other status codes
In nginx, proxy_cache_valid time; without a status code applies to all responses not matched by prior specific directives.
Step 3: Evaluate options
proxy_cache_valid 200 15m;
proxy_cache_valid 404 2m;
proxy_cache_valid 5m; (proxy_cache_valid 200 15m;
proxy_cache_valid 404 2m;
proxy_cache_valid 5m;) is correct as the last line sets default for unmatched codes. proxy_cache_valid 200 15m;
proxy_cache_valid 404 2m;
proxy_cache_valid 0 5m;'s '0' doesn't match valid statuses. 'any' (B) and '1' (C) are invalid for default.
Final Answer:
proxy_cache_valid 200 15m;\nproxy_cache_valid 404 2m;\nproxy_cache_valid 5m; -> Option A
Quick Check:
proxy_cache_valid time; = default for others [OK]
Hint: No status code = default cache validity for unmatched responses [OK]
Common Mistakes:
Using '0' for default (doesn't match statuses)
Using invalid keywords like 'any'
Using incorrect codes like '1' for default
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.