📖 Scenario: You are setting up a simple website on an Nginx web server. To do this, you need to create a server block configuration that tells Nginx how to handle requests for your website.
🎯 Goal: Build a basic Nginx server block configuration for a website hosted on example.com that listens on port 80 and serves files from /var/www/example.
📋 What You'll Learn
Create a server block listening on port 80
Set the server name to example.com
Set the root directory to /var/www/example
Add an index directive with index.html as the default file
💡 Why This Matters
🌍 Real World
Nginx server blocks are used to host websites and web applications by defining how the server responds to different domain names and requests.
💼 Career
Understanding server block structure is essential for DevOps engineers and system administrators managing web servers and deploying applications.
Progress0 / 4 steps
1
Create the server block skeleton
Write the opening and closing server { } block in your Nginx configuration file.
Nginx
Hint
Start by typing server { on one line and } on another line to create the block.
2
Add listen and server_name directives
Inside the server { } block, add a listen 80; directive and a server_name example.com; directive.
Nginx
Hint
Use listen 80; to tell Nginx to listen on port 80 and server_name example.com; to specify the website domain.
3
Add root and index directives
Inside the server { } block, add a root /var/www/example; directive and an index index.html; directive.
Nginx
Hint
The root directive sets the folder where your website files are stored. The index directive sets the default file to serve.
4
Display the complete server block
Print the complete server block configuration exactly as you wrote it.
Nginx
Hint
Use multiple print statements to show each line of the server block exactly.
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
Step 1: Understand the role of server blocks
A server block tells Nginx how to respond to requests for a particular domain or site.
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.
Final Answer:
To define how Nginx handles requests for a specific website or domain -> Option A
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
Step 1: Recall Nginx server block syntax
The correct syntax to start a server block is the keyword server followed by curly braces.
Step 2: Check each option
Only server { uses the exact keyword server with braces, which is valid syntax.
Final Answer:
server { -> Option A
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
Step 1: Identify the listen directive
The line listen 8080; tells Nginx to listen on port 8080.
Step 2: Understand default ports
Since port 8080 is explicitly set, Nginx will listen on 8080, not the default 80 or 443.
Final Answer:
8080 -> Option B
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
Step 1: Check syntax of directives
Each directive in Nginx must end with a semicolon. The listen 80 line is missing a semicolon.
Step 2: Verify other parts
The server_name directive and braces are correct. The listen directive syntax does not require the word 'port'.
Final Answer:
Missing semicolon after listen directive -> Option D
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
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.
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.
Final Answer:
Separate server blocks for each site and port -> Option C
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 unknownstrongwhile earning +1 Grip toward your certificate.