Bird
Raised Fist0
Nginxdevops~20 mins

Server block structure in Nginx - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Nginx Server Block Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of nginx -t with this server block?
Given this nginx server block configuration, what will be the output of nginx -t?
Nginx
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}
A
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Bnginx: [emerg] unknown directive "server_name" in /etc/nginx/nginx.conf:3
Cnginx: [warn] conflicting server name "example.com" on 0.0.0.0:80, ignored
Dnginx: [error] open() "/var/www/example/index.html" failed (2: No such file or directory)
Attempts:
2 left
💡 Hint
Check if the syntax of the server block is correct and all directives are valid.
🧠 Conceptual
intermediate
1:00remaining
Which directive defines the domain names served by this server block?
In an nginx server block, which directive specifies the domain names that the server responds to?
Alisten
Bserver_name
Croot
Dindex
Attempts:
2 left
💡 Hint
Think about which directive tells nginx which website names to match.
❓ Configuration
advanced
2:00remaining
Identify the error in this server block configuration
What error will nginx report when testing this server block configuration?
Nginx
server {
    listen 80
    server_name example.com;
    root /var/www/html;
}
Anginx: [error] invalid parameter "80" in /etc/nginx/nginx.conf:2
B
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Cnginx: [warn] server_name directive is deprecated in /etc/nginx/nginx.conf:3
Dnginx: [emerg] unexpected end of file, expecting ";" or "}" in /etc/nginx/nginx.conf:2
Attempts:
2 left
💡 Hint
Check for missing semicolons in the configuration.
❓ Troubleshoot
advanced
2:00remaining
Why does nginx serve the default site instead of your custom server block?
You created a server block for example.com but nginx serves the default site instead. What is the most likely cause?
AThe root directory does not contain an index.html file
BThe location block is missing a try_files directive
CThe server_name directive is missing or does not match the requested domain
DThe listen directive is set to port 443 but you are accessing via HTTP
Attempts:
2 left
💡 Hint
Check if nginx knows which server block matches the domain you requested.
🔀 Workflow
expert
3:00remaining
Order the steps to enable a new nginx server block and activate it
Put these steps in the correct order to enable a new nginx server block and make it active.
A1,2,3,4
B1,3,2,4
C3,1,2,4
D2,1,3,4
Attempts:
2 left
💡 Hint
Think about creating config, testing it, enabling it, then reloading nginx.

Practice

(1/5)
1. What is the main purpose of a server block in an Nginx configuration?
easy
A. To define how Nginx handles requests for a specific website or domain
B. To set the operating system user for Nginx processes
C. To configure the firewall rules for Nginx
D. To specify the database connection details

Solution

  1. Step 1: Understand the role of server blocks

    A server block tells Nginx how to respond to requests for a particular domain or site.
  2. Step 2: Compare options with server block purpose

    Only To define how Nginx handles requests for a specific website or domain describes handling requests for a website, which matches the server block's role.
  3. Final Answer:

    To define how Nginx handles requests for a specific website or domain -> Option A
  4. Quick Check:

    Server block = website request handling [OK]
Hint: Server blocks map domains to settings in Nginx [OK]
Common Mistakes:
  • Confusing server block with user or firewall settings
  • Thinking server block manages database connections
  • Mixing server block with global Nginx settings
2. Which of the following is the correct syntax to start a server block in Nginx?
easy
A. server {
B. block server {
C. site {
D. server-block {

Solution

  1. Step 1: Recall Nginx server block syntax

    The correct syntax to start a server block is the keyword server followed by curly braces.
  2. Step 2: Check each option

    Only server { uses the exact keyword server with braces, which is valid syntax.
  3. Final Answer:

    server { -> Option A
  4. Quick Check:

    Server block starts with 'server {' [OK]
Hint: Server blocks always start with 'server {' [OK]
Common Mistakes:
  • Using incorrect keywords like 'block' or 'site'
  • Adding extra hyphens or misspelling 'server'
  • Omitting the opening brace
3. Given this server block snippet, what port will Nginx listen on?
server {
    listen 8080;
    server_name example.com;
}
medium
A. 443
B. 8080
C. 80
D. None, it will cause an error

Solution

  1. Step 1: Identify the listen directive

    The line listen 8080; tells Nginx to listen on port 8080.
  2. Step 2: Understand default ports

    Since port 8080 is explicitly set, Nginx will listen on 8080, not the default 80 or 443.
  3. Final Answer:

    8080 -> Option B
  4. Quick Check:

    listen port = 8080 [OK]
Hint: Check the listen directive for port number [OK]
Common Mistakes:
  • Assuming default port 80 without checking listen
  • Confusing port 443 (HTTPS) with 8080
  • Thinking missing listen causes error (it defaults to 80)
4. Identify the error in this server block configuration:
server {
    listen 80
    server_name mysite.com;
}
medium
A. listen directive should be 'listen port 80;'
B. server_name directive is incorrect
C. Curly braces are missing
D. Missing semicolon after listen directive

Solution

  1. Step 1: Check syntax of directives

    Each directive in Nginx must end with a semicolon. The listen 80 line is missing a semicolon.
  2. Step 2: Verify other parts

    The server_name directive and braces are correct. The listen directive syntax does not require the word 'port'.
  3. Final Answer:

    Missing semicolon after listen directive -> Option D
  4. Quick Check:

    Directives end with ';' [OK]
Hint: Every directive line ends with a semicolon [OK]
Common Mistakes:
  • Forgetting semicolons after directives
  • Adding unnecessary words like 'port' in listen
  • Misplacing or missing braces
5. You want to serve two websites on the same Nginx server: site1.com on port 80 and site2.com on port 8080. Which configuration correctly sets up the server blocks?
hard
A. server { listen 80 8080; server_name site1.com site2.com; }
B. server { listen 80; server_name site1.com site2.com; }
C. server { listen 80; server_name site1.com; } server { listen 8080; server_name site2.com; }
D. server { listen 80; server_name site1.com; listen 8080; server_name site2.com; }

Solution

  1. Step 1: Understand separate server blocks for different ports

    Each site on a different port needs its own server block with its own listen and server_name directives.
  2. Step 2: Analyze each option

    server { listen 80; server_name site1.com; } server { listen 8080; server_name site2.com; } correctly defines two separate server blocks, one for port 80 and site1.com, another for port 8080 and site2.com. Other options either combine ports or server_names incorrectly.
  3. Final Answer:

    Separate server blocks for each site and port -> Option C
  4. Quick Check:

    One server block per port/site [OK]
Hint: Use separate server blocks for different ports/sites [OK]
Common Mistakes:
  • Combining multiple ports in one listen directive incorrectly
  • Listing multiple server_names in one block for different ports
  • Trying to put two listen directives in one server block for different sites
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