Bird
Raised Fist0
Nginxdevops~20 mins

Cache bypass conditions in Nginx - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Cache Bypass Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Cache Bypass with Specific Header
Given the following nginx configuration snippet, what will be the cache behavior when a request contains the header X-Bypass-Cache: true?
Nginx
proxy_cache_bypass $http_x_bypass_cache;
proxy_cache my_cache;
proxy_cache_valid 200 1h;
AThe cache will be bypassed and the request will be forwarded to the backend.
BThe cache will be used normally, ignoring the header.
CThe cache will be cleared for all entries.
DThe request will be blocked with a 403 Forbidden error.
Attempts:
2 left
💡 Hint
Check how the variable $http_x_bypass_cache controls cache bypass.
❓ Configuration
intermediate
2:00remaining
Condition to Bypass Cache for POST Requests
Which nginx configuration snippet correctly bypasses cache for POST requests?
Aproxy_cache_bypass $request_method;
Bproxy_cache_bypass $request_method = 'POST';
Cproxy_cache_bypass $request_method = POST;
Dproxy_cache_bypass $request_method =POST;
Attempts:
2 left
💡 Hint
The variable $request_method contains the HTTP method. Non-empty values cause bypass.
❓ Troubleshoot
advanced
2:00remaining
Unexpected Cache Bypass Behavior
An nginx server is configured with:
proxy_cache_bypass $cookie_nocache;

Users report cache is always bypassed even without the cookie nocache. What is the most likely cause?
AThe variable <code>$cookie_nocache</code> is empty string, which still triggers bypass.
BThe cookie name is case-sensitive and should be <code>noCache</code>.
CThe configuration requires <code>proxy_cache_valid</code> to enable caching.
DThe variable <code>$cookie_nocache</code> is undefined and treated as empty, so cache is not bypassed.
Attempts:
2 left
💡 Hint
Verify the full cache configuration, especially proxy_cache_valid.
🔀 Workflow
advanced
2:00remaining
Implementing Cache Bypass Based on Query Parameter
You want to bypass cache only when the URL contains the query parameter refresh=true. Which workflow correctly implements this in nginx?
ADirectly use <code>proxy_cache_bypass $arg_refresh;</code> without any map.
BUse a map to set a variable to 1 if <code>$arg_refresh</code> equals 'true', then use that variable in <code>proxy_cache_bypass</code>.
CUse <code>if ($arg_refresh = 'true') { proxy_cache_bypass 1; }</code> inside location block.
DSet <code>proxy_cache_bypass $query_string;</code> to bypass cache when any query exists.
Attempts:
2 left
💡 Hint
Maps are preferred for conditional cache bypass based on variable values.
🧠 Conceptual
expert
2:00remaining
Effect of Multiple Conditions in proxy_cache_bypass
Consider this nginx configuration:
proxy_cache_bypass $http_cache_control $cookie_nocache;

What is the effect of listing multiple variables in proxy_cache_bypass?
ACache is bypassed only if all variables are non-empty (logical AND).
BCache is bypassed only if the first variable is non-empty; others are ignored.
CCache is never bypassed because multiple variables cause a syntax error.
DCache is bypassed if any one of the variables is non-empty (logical OR).
Attempts:
2 left
💡 Hint
Check how nginx evaluates multiple variables in proxy_cache_bypass.

Practice

(1/5)
1. What is the main purpose of cache bypass conditions in nginx?
easy
A. To increase the cache size automatically
B. To compress cached content before serving
C. To delete cached files periodically
D. To tell nginx when to skip serving cached content

Solution

  1. Step 1: Understand cache bypass meaning

    Cache bypass conditions define when nginx should not use cached content.
  2. Step 2: Identify the main purpose

    The main goal is to skip cached content under certain conditions, like logged-in users.
  3. Final Answer:

    To tell nginx when to skip serving cached content -> Option D
  4. Quick Check:

    Cache bypass = skip cache [OK]
Hint: Cache bypass means skipping cache, not managing size or deletion [OK]
Common Mistakes:
  • Confusing bypass with cache size management
  • Thinking bypass deletes cache
  • Assuming bypass compresses content
2. Which of the following is the correct syntax to bypass cache in nginx when a cookie named skip_cache is set?
easy
A. set $skip_cache 1 if ($cookie_skip_cache);
B. set $skip_cache 1 if ($cookie_skip_cache = 1);
C. set $skip_cache 1 if ($cookie_skip_cache != '');
D. set $skip_cache 1 if ($cookie_skip_cache == 'true');

Solution

  1. Step 1: Understand cookie variable usage

    In nginx, $cookie_name holds the cookie value or empty if not set.
  2. Step 2: Check correct condition to detect cookie presence

    Checking if $cookie_skip_cache is not empty string means cookie is set.
  3. Final Answer:

    set $skip_cache 1 if ($cookie_skip_cache != ''); -> Option C
  4. Quick Check:

    Check cookie not empty = bypass cache [OK]
Hint: Use != '' to check if cookie exists, not equality to 1 or 'true' [OK]
Common Mistakes:
  • Using = instead of != for condition
  • Comparing cookie to 1 or 'true' incorrectly
  • Missing quotes around empty string
3. Given this nginx config snippet:
set $skip_cache 0;
if ($request_method = POST) {
  set $skip_cache 1;
}
if ($arg_nocache = 1) {
  set $skip_cache 1;
}

proxy_cache_bypass $skip_cache;

What happens when a POST request with ?nocache=1 is sent?
medium
A. Cache is used because $skip_cache remains 0
B. Cache is bypassed because $skip_cache is set to 1
C. Cache is bypassed only if request method is GET
D. Configuration causes syntax error and no caching

Solution

  1. Step 1: Analyze conditions setting $skip_cache

    Both if blocks set $skip_cache to 1 if request method is POST or arg_nocache=1.
  2. Step 2: Evaluate given request

    Request is POST and has nocache=1, so both conditions set $skip_cache=1.
  3. Final Answer:

    Cache is bypassed because $skip_cache is set to 1 -> Option B
  4. Quick Check:

    POST or nocache=1 sets skip_cache=1 [OK]
Hint: If any bypass condition matches, $skip_cache becomes 1 [OK]
Common Mistakes:
  • Assuming POST requests use cache
  • Ignoring query parameter condition
  • Thinking config syntax is invalid
4. You wrote this nginx config to bypass cache for logged-in users:
set $skip_cache 0;
if ($http_cookie ~* "user_logged_in=1") {
  set $skip_cache 1;
}
proxy_cache_bypass $skip_cache;

But cache is still used for logged-in users. What is the likely error?
medium
A. The if condition does not reliably support regex matching
B. The variable $skip_cache is not initialized before if
C. The regex in if condition is incorrect syntax
D. The proxy_cache_bypass directive is missing a semicolon

Solution

  1. Step 1: Understand nginx if limitations

    nginx if does not reliably support regex matching with ~ or ~* operators for cache bypass.
  2. Step 2: Identify common pitfall with if in nginx

    nginx if inside server/location blocks can be tricky; better to use map for cache bypass.
  3. Step 3: Recognize that if with regex may not work as expected for cache bypass

    Using if with regex in this way often fails for cache bypass.
  4. Final Answer:

    The if condition does not reliably support regex matching -> Option A
  5. Quick Check:

    nginx if regex often unreliable for cache bypass [OK]
Hint: Use map directive instead of if for reliable cache bypass [OK]
Common Mistakes:
  • Assuming if regex always works for cache bypass
  • Forgetting to initialize variables
  • Missing semicolons causing errors
5. You want to bypass cache only if the request method is POST or the URL contains nocache=1, but not for logged-in users with cookie user_logged_in=1. Which nginx config snippet correctly implements this?
hard
A. set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($arg_nocache = 1) { set $skip_cache 1; } if ($http_cookie ~* "user_logged_in=1") { set $skip_cache 0; } proxy_cache_bypass $skip_cache;
B. map $http_cookie $skip_cache { default 1; ~user_logged_in=1 0; } if ($request_method = POST) { set $skip_cache 1; } if ($arg_nocache = 1) { set $skip_cache 1; } proxy_cache_bypass $skip_cache;
C. map $http_cookie $skip_cache { default 0; ~user_logged_in=1 1; } if ($request_method = POST) { set $skip_cache 1; } if ($arg_nocache = 1) { set $skip_cache 1; } proxy_cache_bypass $skip_cache;
D. map $http_cookie $skip_cache { default 0; ~user_logged_in=1 0; } if ($request_method = POST) { set $skip_cache 1; } if ($arg_nocache = 1) { set $skip_cache 1; } proxy_cache_bypass $skip_cache;

Solution

  1. Step 1: Understand the requirement

    Bypass cache if POST or nocache=1, but do NOT bypass if user_logged_in=1 cookie is present.
  2. Step 2: Analyze each option

    Options A and B use map but do not reset skip_cache correctly for logged-in users. map $http_cookie $skip_cache { default 0; ~user_logged_in=1 1; } if ($request_method = POST) { set $skip_cache 1; } if ($arg_nocache = 1) { set $skip_cache 1; } proxy_cache_bypass $skip_cache; sets skip_cache=1 for logged-in users, which is opposite. set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($arg_nocache = 1) { set $skip_cache 1; } if ($http_cookie ~* "user_logged_in=1") { set $skip_cache 0; } proxy_cache_bypass $skip_cache; sets skip_cache=1 for POST or nocache=1, then resets to 0 if user_logged_in=1 cookie exists, correctly preventing bypass.
  3. Final Answer:

    set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($arg_nocache = 1) { set $skip_cache 1; } if ($http_cookie ~* "user_logged_in=1") { set $skip_cache 0; } proxy_cache_bypass $skip_cache; -> Option A
  4. Quick Check:

    Set bypass then reset for logged-in users [OK]
Hint: Set bypass first, then reset skip_cache to 0 for logged-in users [OK]
Common Mistakes:
  • Setting skip_cache=1 for logged-in users by mistake
  • Using map incorrectly without reset logic
  • Not resetting skip_cache after conditions
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