Bird
Raised Fist0
Nginxdevops~20 mins

FastCGI cache in Nginx - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
FastCGI Cache Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
FastCGI cache status header output
You have enabled FastCGI cache in nginx with the directive fastcgi_cache_use_stale error timeout updating. When a cached response is served, nginx adds a header X-Cache-Status. What is the value of this header when nginx serves a stale cached response due to an upstream timeout?
A"HIT"
B"MISS"
C"STALE"
D"BYPASS"
Attempts:
2 left
💡 Hint
Think about what happens when nginx serves a cached response that is not fresh but still usable due to an upstream error.
❓ Configuration
intermediate
1:30remaining
Correct FastCGI cache key configuration
Which of the following fastcgi_cache_key directives correctly creates a cache key that includes the host, request URI, and query string to uniquely cache requests?
Afastcgi_cache_key "$host$uri$is_args$args";
Bfastcgi_cache_key "$host$uri$query_string";
Cfastcgi_cache_key "$host$uri$args";
Dfastcgi_cache_key "$host$request_uri$query_string";
Attempts:
2 left
💡 Hint
Remember that $is_args adds a '?' only if there are query arguments.
❓ Troubleshoot
advanced
2:00remaining
Diagnosing why FastCGI cache is not storing responses
You configured FastCGI cache in nginx, but no cached files appear in the cache directory after requests. Which of the following is the most likely cause?
AThe <code>fastcgi_cache_lock</code> directive is enabled.
BThe <code>fastcgi_cache_valid</code> directive is set to 0 seconds.
CThe <code>fastcgi_cache_use_stale</code> directive is not set.
DThe <code>fastcgi_cache_path</code> directive is missing or incorrectly set.
Attempts:
2 left
💡 Hint
Check if the cache directory and zone are properly defined.
🔀 Workflow
advanced
2:00remaining
Order of directives to enable FastCGI cache
Arrange the following nginx configuration steps in the correct order to enable FastCGI caching for PHP requests.
A1,2,4,3
B1,3,2,4
C2,1,3,4
D1,2,3,4
Attempts:
2 left
💡 Hint
Think about defining the cache storage first, then key, then validity, and finally enabling cache usage.
✅ Best Practice
expert
2:30remaining
Best practice for cache purging with FastCGI cache
Which method is considered best practice to safely purge specific cached content in nginx FastCGI cache without restarting nginx or deleting cache files manually?
ASet <code>fastcgi_cache_valid</code> to a very low value to expire cache quickly.
BUse <code>fastcgi_cache_purge</code> directive with a location block and send HTTP PURGE requests.
CManually delete cache files from the cache directory and reload nginx.
DRestart nginx to clear all cached content.
Attempts:
2 left
💡 Hint
Look for a method that allows selective cache removal via HTTP requests.

Practice

(1/5)
1. What is the main purpose of enabling FastCGI cache in nginx?
easy
A. To store dynamic page responses and serve them faster next time
B. To block all dynamic content from being served
C. To increase the size of the nginx log files
D. To disable backend server processing completely

Solution

  1. Step 1: Understand FastCGI cache function

    FastCGI cache stores dynamic content generated by backend servers temporarily.
  2. Step 2: Identify the benefit

    Serving cached content reduces backend load and speeds up response time.
  3. Final Answer:

    To store dynamic page responses and serve them faster next time -> Option A
  4. Quick Check:

    FastCGI cache purpose = store and speed up [OK]
Hint: FastCGI cache speeds up dynamic pages by storing them [OK]
Common Mistakes:
  • Thinking it blocks dynamic content
  • Confusing cache with logging
  • Assuming it disables backend servers
2. Which of the following is the correct syntax to define a FastCGI cache zone in nginx?
easy
A. fastcgi_cache /path/to/cache keys_zone=mycache inactive=60m;
B. fastcgi_cache_zone /path/to/cache keys_zone=mycache:10m inactive=60m;
C. fastcgi_cache_path keys_zone=mycache:10m /path/to/cache inactive=60m;
D. fastcgi_cache_path /path/to/cache levels=1:2 keys_zone=mycache:10m inactive=60m;

Solution

  1. Step 1: Recall fastcgi_cache_path syntax

    The correct syntax includes path, levels, keys_zone with size, and inactive time.
  2. Step 2: Match options with syntax

    fastcgi_cache_path /path/to/cache levels=1:2 keys_zone=mycache:10m inactive=60m; matches the correct order and parameters exactly.
  3. Final Answer:

    fastcgi_cache_path /path/to/cache levels=1:2 keys_zone=mycache:10m inactive=60m; -> Option D
  4. Quick Check:

    Correct fastcgi_cache_path syntax = fastcgi_cache_path /path/to/cache levels=1:2 keys_zone=mycache:10m inactive=60m; [OK]
Hint: Remember: fastcgi_cache_path needs path, levels, keys_zone [OK]
Common Mistakes:
  • Mixing keys_zone and path order
  • Omitting levels parameter
  • Using fastcgi_cache instead of fastcgi_cache_path
3. Given this nginx config snippet:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m inactive=30m;
server {
location ~ \.php$ {
fastcgi_cache cache_zone;
fastcgi_cache_valid 200 10m;
fastcgi_pass backend;
}
}

What happens when a PHP page is requested twice within 10 minutes?
medium
A. The cache is cleared after the first request
B. Both requests are forwarded to the backend server
C. The second request is served from cache, speeding up response
D. The second request returns a 404 error

Solution

  1. Step 1: Understand fastcgi_cache_valid 200 10m

    This means HTTP 200 responses are cached for 10 minutes.
  2. Step 2: Analyze repeated request behavior

    The first request caches the response; the second request within 10 minutes uses cache.
  3. Final Answer:

    The second request is served from cache, speeding up response -> Option C
  4. Quick Check:

    Cache valid time means reuse cached response [OK]
Hint: fastcgi_cache_valid sets cache duration for status codes [OK]
Common Mistakes:
  • Assuming backend always handles requests
  • Thinking cache clears after first request
  • Confusing cache duration with cache clearing
4. You configured FastCGI cache but notice no caching happens. Which nginx directive is most likely missing?
medium
A. fastcgi_cache_path
B. fastcgi_cache_key
C. fastcgi_cache_valid
D. fastcgi_pass

Solution

  1. Step 1: Identify required directives for caching

    fastcgi_cache_path defines cache storage; fastcgi_cache_valid sets cache time; fastcgi_pass sends requests to backend.
  2. Step 2: Understand fastcgi_cache_key role

    fastcgi_cache_key defines how requests are identified for caching; missing it disables caching.
  3. Final Answer:

    fastcgi_cache_key -> Option B
  4. Quick Check:

    Missing cache key disables caching [OK]
Hint: Without fastcgi_cache_key, nginx can't store cache properly [OK]
Common Mistakes:
  • Forgetting to set fastcgi_cache_key
  • Confusing fastcgi_cache_valid with cache enabling
  • Assuming fastcgi_pass controls caching
5. You want to cache PHP responses but exclude logged-in users identified by a cookie user_session. Which configuration snippet correctly disables cache for logged-in users?
hard
A. fastcgi_no_cache $cookie_user_session;
B. fastcgi_cache_valid 200 10m if_not $cookie_user_session;
C. fastcgi_cache_key $cookie_user_session;
D. fastcgi_cache_bypass $cookie_user_session;

Solution

  1. Step 1: Understand directives controlling cache bypass

    fastcgi_no_cache disables caching when its variable is true; fastcgi_cache_bypass skips cache lookup but may still cache response.
  2. Step 2: Identify correct directive for excluding logged-in users

    fastcgi_no_cache $cookie_user_session; disables caching for requests with that cookie, preventing cached content for logged-in users.
  3. Final Answer:

    fastcgi_no_cache $cookie_user_session; -> Option A
  4. Quick Check:

    fastcgi_no_cache disables caching for matching requests [OK]
Hint: Use fastcgi_no_cache to exclude requests from caching [OK]
Common Mistakes:
  • Using fastcgi_cache_bypass alone to prevent caching
  • Trying to conditionally set fastcgi_cache_valid
  • Misusing fastcgi_cache_key for cache control
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