Bird
Raised Fist0
Nginxdevops~10 mins

A/B testing with split_clients in Nginx - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a variable 'variant' using split_clients.

Nginx
split_clients "$remote_addr" $variant {
    [1];
}
Drag options to blanks, or click blank then click option'
A100% 0%
B10% A; 90% B
C25% A; 75% B
D50% A; 50% B
Attempts:
3 left
💡 Hint
Common Mistakes
Using percentages that do not add up to 100%
Not using semicolons to separate variant assignments
2fill in blank
medium

Complete the code to set a variable 'color' for A/B testing with split_clients.

Nginx
split_clients "$http_user_agent" $color {
    [1];
}
Drag options to blanks, or click blank then click option'
A30% red; 70% blue
B80% orange; 20% purple
C50% black; 50% white
D60% green; 40% yellow
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect syntax without semicolons
Percentages not summing to 100%
3fill in blank
hard

Fix the error in the split_clients block to correctly assign variants.

Nginx
split_clients "$cookie_user" $group {
    [1];
}
Drag options to blanks, or click blank then click option'
A50% groupA; 50% groupB
B50% groupA;50% groupB
C50% groupA, 50% groupB
D50% groupA 50% groupB
Attempts:
3 left
💡 Hint
Common Mistakes
Using commas instead of semicolons
Missing semicolons between assignments
4fill in blank
hard

Fill both blanks to split traffic by IP and assign variants with weights.

Nginx
split_clients "$remote_addr" $test_group {
    [1];
    [2];
}
Drag options to blanks, or click blank then click option'
A20% control
B80% experiment
C50% control
D50% experiment
Attempts:
3 left
💡 Hint
Common Mistakes
Percentages not adding to 100%
Missing semicolons after assignments
5fill in blank
hard

Fill all three blanks to create a split_clients block with three variants.

Nginx
split_clients "$http_cookie" $variant {
    [1];
    [2];
    [3];
}
Drag options to blanks, or click blank then click option'
A10% variantA
B20% variantB
C70% variantC
D50% variantA
Attempts:
3 left
💡 Hint
Common Mistakes
Percentages not summing to 100%
Incorrect syntax without semicolons

Practice

(1/5)
1. What is the main purpose of the split_clients directive in nginx for A/B testing?
easy
A. To redirect all traffic to a single URL
B. To cache static files for faster loading
C. To compress responses before sending to clients
D. To divide visitors into groups based on a variable for testing different versions

Solution

  1. Step 1: Understand the role of split_clients

    The split_clients directive is designed to split traffic into groups based on a variable like IP or cookie.
  2. Step 2: Connect to A/B testing purpose

    This splitting allows serving different site versions to different groups, which is the core of A/B testing.
  3. Final Answer:

    To divide visitors into groups based on a variable for testing different versions -> Option D
  4. Quick Check:

    split_clients divides visitors for testing [OK]
Hint: Remember: split_clients splits visitors into groups [OK]
Common Mistakes:
  • Confusing split_clients with caching directives
  • Thinking it redirects all traffic to one URL
  • Assuming it compresses responses
2. Which of the following is the correct syntax to use split_clients in nginx to split traffic by cookie $cookie_user into two groups: 50% 'A' and 50% 'B'?
easy
A. split_clients $cookie_user $variant { 50% A; 50% B; }
B. split_clients $cookie_user { 50% A; 50% B; }
C. split_clients $cookie_user $variant { 50 A; 50 B; }
D. split_clients $cookie_user $variant { 50% "A"; 50% "B"; }

Solution

  1. Step 1: Review split_clients syntax

    The correct syntax requires specifying the source variable, the destination variable, and the percentage groups with semicolons.
  2. Step 2: Check each option

    split_clients $cookie_user $variant { 50% A; 50% B; } correctly uses split_clients $cookie_user $variant { 50% A; 50% B; }. split_clients $cookie_user { 50% A; 50% B; } misses the destination variable. split_clients $cookie_user $variant { 50 A; 50 B; } lacks the percent sign. split_clients $cookie_user $variant { 50% "A"; 50% "B"; } incorrectly quotes the group names.
  3. Final Answer:

    split_clients $cookie_user $variant { 50% A; 50% B; } -> Option A
  4. Quick Check:

    Syntax requires source, destination, and percent groups [OK]
Hint: Syntax: split_clients source_var dest_var { percent group; } [OK]
Common Mistakes:
  • Omitting the destination variable
  • Forgetting percent signs (%)
  • Using quotes around group names
3. Given this nginx config snippet:
split_clients $remote_addr $group {
  30% A;
  70% B;
}

server {
  location / {
    if ($group = A) {
      return 200 'Group A content';
    }
    return 200 'Group B content';
  }
}

What response do 70% of visitors receive?
medium
A. Group A content
B. Error: invalid syntax
C. Group B content
D. No response, connection closed

Solution

  1. Step 1: Understand split_clients distribution

    The split_clients directive splits visitors by IP into 30% group A and 70% group B.
  2. Step 2: Identify the majority group

    The configuration assigns 70% of visitors to group B based on the hash distribution, so they receive 'Group B content'.
  3. Final Answer:

    Group B content -> Option C
  4. Quick Check:

    70% of visitors get Group B content [OK]
Hint: Larger split_clients percentage gets more visitors [OK]
Common Mistakes:
  • Assuming visitors always get Group A content
  • Thinking syntax error occurs
  • Misunderstanding the traffic split percentages
4. You wrote this nginx config:
split_clients $cookie_user $group {
  50% A
  50% B
}

But nginx fails to start. What is the error?
medium
A. Percentages must add up to 1000%
B. Missing semicolons after percentage groups
C. Destination variable $group is not declared
D. Using $cookie_user instead of $remote_addr

Solution

  1. Step 1: Check syntax for split_clients block

    Each percentage group line must end with a semicolon (;). The config misses semicolons after '50% A' and '50% B'.
  2. Step 2: Validate other options

    Using $cookie_user is valid. $group is declared as destination variable. Percentages add to 100%, not 1000%.
  3. Final Answer:

    Missing semicolons after percentage groups -> Option B
  4. Quick Check:

    Each group line ends with ; [OK]
Hint: Always end split_clients group lines with semicolons [OK]
Common Mistakes:
  • Forgetting semicolons after group percentages
  • Thinking variable names must be IP only
  • Misreading percentage sums
5. You want to run an A/B test with three groups: 20% 'A', 30% 'B', and 50% 'C'. You also want to ensure users stay in the same group on repeat visits using a cookie $cookie_user. Which nginx config snippet correctly implements this?
hard
A. split_clients $cookie_user $group { 20% A; 30% B; 50% C; } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } }
B. split_clients $remote_addr $group { 20% A; 30% B; 50% C; } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } }
C. split_clients $cookie_user $group { 20 A; 30 B; 50 C; } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } }
D. split_clients $cookie_user $group { 20% A 30% B 50% C } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } }

Solution

  1. Step 1: Confirm correct split_clients syntax and variable

    split_clients $cookie_user $group { 20% A; 30% B; 50% C; } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } } uses $cookie_user to keep users in the same group on repeat visits and correctly uses percentages with semicolons.
  2. Step 2: Check other options for errors

    split_clients $remote_addr $group { 20% A; 30% B; 50% C; } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } } uses $remote_addr which may change and not guarantee consistent grouping. split_clients $cookie_user $group { 20 A; 30 B; 50 C; } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } } misses percent signs. split_clients $cookie_user $group { 20% A 30% B 50% C } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } } misses semicolons after group lines.
  3. Final Answer:

    split_clients $cookie_user $group { 20% A; 30% B; 50% C; } server { location / { if ($group = A) { return 200 'A version'; } if ($group = B) { return 200 'B version'; } return 200 'C version'; } } -> Option A
  4. Quick Check:

    Use cookie variable and proper syntax for consistent groups [OK]
Hint: Use cookie variable and semicolons for stable multi-group split [OK]
Common Mistakes:
  • Using IP instead of cookie for consistent user grouping
  • Omitting percent signs or semicolons
  • Misordering or missing group percentages
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