Bird
Raised Fist0
Nginxdevops~20 mins

server_name directive in Nginx - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Server Name Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
1:30remaining
Understanding the purpose of the server_name directive

What is the main role of the server_name directive in an Nginx server block?

AIt sets the root directory for serving static files.
BIt defines the port number on which Nginx listens for incoming connections.
CIt specifies the domain names or IP addresses that the server block should respond to.
DIt configures the SSL certificate paths for HTTPS connections.
Attempts:
2 left
💡 Hint

Think about how Nginx decides which server block handles a request based on the requested domain.

💻 Command Output
intermediate
1:30remaining
Output of Nginx server block with multiple server_name values

Given this Nginx server block snippet:

server {
    listen 80;
    server_name example.com www.example.com api.example.com;
    return 200 'Hello from example.com!';
}

What will be the response when a user visits http://api.example.com?

AHello from example.com!
B404 Not Found
C502 Bad Gateway
DDefault Nginx welcome page
Attempts:
2 left
💡 Hint

Check which server_name matches the requested domain.

❓ Configuration
advanced
2:00remaining
Correctly configuring server_name for wildcard subdomains

Which server_name directive correctly matches all subdomains of example.com except the root domain itself?

Aserver_name *example.com;
Bserver_name example.com*;
Cserver_name example.com.*;
Dserver_name *.example.com;
Attempts:
2 left
💡 Hint

Remember how wildcards work in domain matching for Nginx.

❓ Troubleshoot
advanced
2:00remaining
Troubleshooting server_name mismatch causing 404 errors

An Nginx server block has server_name www.example.com; but requests to example.com return 404 errors. What is the most likely cause?

AThe listen directive is missing the port number.
BThe server_name does not include <code>example.com</code>, so Nginx does not match the request to this block.
CThe root directive is incorrectly set.
DNginx does not support multiple server_name values.
Attempts:
2 left
💡 Hint

Check if the requested domain is listed in server_name.

🔀 Workflow
expert
2:30remaining
Order of server_name matching in Nginx

Given these server blocks, which server block will handle a request to test.example.com?

server {
    listen 80;
    server_name example.com;
    return 200 'Root domain';
}

server {
    listen 80;
    server_name *.example.com;
    return 200 'Wildcard subdomain';
}

server {
    listen 80;
    server_name test.example.com;
    return 200 'Specific subdomain';
}
AThe block with server_name test.example.com
BThe block with server_name example.com
CThe first server block defined in the config
DThe block with server_name *.example.com
Attempts:
2 left
💡 Hint

Check how Nginx prioritizes exact names over wildcards.

Practice

(1/5)
1. What is the main purpose of the server_name directive in an nginx configuration?
easy
A. To define the port number for the server
B. To specify which domain names the server should respond to
C. To set the root directory for website files
D. To configure the SSL certificate path

Solution

  1. Step 1: Understand the role of server_name

    The server_name directive tells nginx which domain names it should respond to when a request arrives.
  2. Step 2: Compare with other directives

    Other directives like listen set ports, root sets file paths, and SSL directives configure certificates, not domain names.
  3. Final Answer:

    To specify which domain names the server should respond to -> Option B
  4. Quick Check:

    server_name = domain names [OK]
Hint: server_name always sets domains nginx listens for [OK]
Common Mistakes:
  • Confusing server_name with listen port
  • Thinking server_name sets file paths
  • Mixing server_name with SSL settings
2. Which of the following is the correct syntax to set multiple domain names in the server_name directive?
easy
A. server_name example.com www.example.com;
B. server_name = example.com, www.example.com;
C. server_name: example.com www.example.com;
D. server_name example.com; www.example.com;

Solution

  1. Step 1: Recall nginx syntax for server_name

    The correct syntax lists domain names separated by spaces, ending with a semicolon.
  2. Step 2: Analyze each option

    server_name example.com www.example.com; correctly lists domains separated by spaces and ends with a semicolon. Options B and C use invalid characters (=, :, commas). server_name example.com; www.example.com; incorrectly splits domains into two statements.
  3. Final Answer:

    server_name example.com www.example.com; -> Option A
  4. Quick Check:

    Multiple domains separated by spaces [OK]
Hint: List domains with spaces, end with semicolon [OK]
Common Mistakes:
  • Using commas between domain names
  • Adding equal signs or colons
  • Splitting domains into multiple directives
3. Given this nginx server block snippet:
server {
    listen 80;
    server_name *.example.com example.org;
}

Which domain will nginx respond to?
medium
A. Only example.org
B. Only subdomains of example.com
C. Both example.org and any subdomain of example.com
D. Any domain ending with .com

Solution

  1. Step 1: Understand the wildcard in server_name

    The *.example.com matches any subdomain like www.example.com or blog.example.com, but not example.com itself.
  2. Step 2: Check the other domain

    The directive also includes example.org, so nginx responds to that exact domain as well.
  3. Final Answer:

    Both example.org and any subdomain of example.com -> Option C
  4. Quick Check:

    wildcard + exact domain = both matched [OK]
Hint: Wildcard matches subdomains; list exact domains separately [OK]
Common Mistakes:
  • Thinking wildcard matches main domain without subdomain
  • Assuming wildcard matches all .com domains
  • Ignoring exact domain entries
4. You wrote this nginx config:
server {
    listen 80;
    server_name www.example.com, example.org;
}

Why does nginx fail to start?
medium
A. Because semicolon is missing after server_name
B. Because the listen directive is missing a port
C. Because server_name must be inside location block
D. Because commas are not allowed between domain names

Solution

  1. Step 1: Identify syntax error in server_name

    The server_name directive expects domain names separated by spaces, not commas.
  2. Step 2: Check other parts of config

    The listen directive correctly specifies port 80. server_name is valid in server block, and semicolon is present.
  3. Final Answer:

    Because commas are not allowed between domain names -> Option D
  4. Quick Check:

    No commas allowed in server_name list [OK]
Hint: Separate domains with spaces, never commas [OK]
Common Mistakes:
  • Using commas between domains
  • Placing server_name inside location block
  • Omitting semicolon at end
5. You want nginx to respond to example.com, www.example.com, and any subdomain like blog.example.com. Which server_name directive is correct?
hard
A. server_name example.com www.example.com *.example.com;
B. server_name example.com www.example.com;
C. server_name *.example.com;
D. server_name www.example.com example.com*;

Solution

  1. Step 1: Understand domain matching with wildcards

    The wildcard *.example.com matches subdomains like blog.example.com but does NOT match the root domain example.com.
  2. Step 2: Include all required domains explicitly

    To cover example.com and www.example.com, they must be listed explicitly along with the wildcard.
  3. Final Answer:

    server_name example.com www.example.com *.example.com; -> Option A
  4. Quick Check:

    Wildcard excludes root domain, list all needed domains [OK]
Hint: Wildcard excludes root domain; list it explicitly [OK]
Common Mistakes:
  • Assuming wildcard covers root domain
  • Using invalid wildcard syntax like example.com*
  • Omitting www or root domain
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