Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Understanding Directives and Blocks in Nginx Configuration
📖 Scenario: You are setting up a simple web server using Nginx. To do this, you need to write a configuration file that tells Nginx how to handle requests.In Nginx, configuration is done using directives and blocks. Directives are instructions, and blocks group related directives together.
🎯 Goal: Build a basic Nginx configuration file with a http block containing a server block. Inside the server block, set the server name and root directory using directives.
📋 What You'll Learn
Create an http block
Inside http, create a server block
Inside server, add a server_name directive with value example.com
Inside server, add a root directive with value /var/www/html
Print the complete configuration at the end
💡 Why This Matters
🌍 Real World
Nginx is a popular web server used to serve websites and applications. Understanding directives and blocks helps you configure it to handle web traffic correctly.
💼 Career
Many DevOps and system administrator roles require writing and managing Nginx configuration files to deploy and maintain web services.
Progress0 / 4 steps
1
Create the http block
Write the opening and closing lines for an http block in Nginx configuration. Use http { to start and } to end the block.
Nginx
Hint
The http block groups all HTTP-related settings.
2
Add a server block inside http
Inside the existing http block, add a server block using server { and } lines.
Nginx
Hint
The server block defines settings for one website or domain.
3
Add server_name and root directives inside server
Inside the server block, add the directive server_name example.com; and the directive root /var/www/html; each on its own line.
Nginx
Hint
The server_name directive sets the domain name. The root directive sets the folder for website files.
4
Print the complete Nginx configuration
Print the entire Nginx configuration stored in a variable called nginx_config.
Nginx
Hint
Use print(nginx_config) to display the configuration.
Practice
(1/5)
1. What is the main difference between a directive and a block in an nginx configuration?
easy
A. A directive groups multiple blocks; a block is a single instruction ending with a semicolon.
B. A directive is a single instruction ending with a semicolon; a block groups multiple directives inside curly braces.
C. A directive is used only for server settings; a block is used only for location settings.
D. A directive must always contain a block inside it.
Solution
Step 1: Understand directive syntax
A directive is a single instruction that ends with a semicolon in nginx configuration.
Step 2: Understand block syntax
A block groups multiple directives inside curly braces to organize related settings.
Final Answer:
A directive is a single instruction ending with a semicolon; a block groups multiple directives inside curly braces. -> Option B
Quick Check:
Directive = single instruction; Block = group of directives [OK]
Hint: Directives end with ; blocks use { } to group [OK]
Common Mistakes:
Confusing directives with blocks
Thinking blocks end with semicolon
Assuming directives can contain blocks
2. Which of the following is the correct syntax for an nginx directive?
easy
A. listen 80;
B. server { listen 80 }
C. location / { listen 80 }
D. listen 80
Solution
Step 1: Identify directive syntax
A directive must end with a semicolon and is a single instruction.
Step 2: Check each option
listen 80; ends with a semicolon and is a single instruction: listen 80;.
Final Answer:
listen 80; -> Option A
Quick Check:
Directive ends with ; [OK]
Hint: Directives always end with a semicolon ; [OK]
Common Mistakes:
Omitting semicolon at end
Using curly braces for directives
Mixing block syntax with directive
3. Given this nginx configuration snippet, what will happen when a request is made to /images?
location /images/ {
root /data;
autoindex on;
}
medium
A. Nginx will return a 404 error because root is incorrectly used.
B. Nginx will serve files from /images/ directory on the server root.
C. Nginx will redirect requests to /data/images/ automatically.
D. Nginx will serve files from /data/images/ and show a directory listing if no index file exists.
Solution
Step 1: Understand the location block
The location block matches requests starting with /images/.
Step 2: Interpret the root directive
Root sets the base directory to /data, so files are served from /data/images/.
Step 3: Effect of autoindex on
If no index file exists, nginx shows a directory listing.
Final Answer:
Nginx will serve files from /data/images/ and show a directory listing if no index file exists. -> Option D
Hint: root sets base path; autoindex shows directory listing [OK]
Common Mistakes:
Confusing root with alias
Assuming redirect happens automatically
Ignoring autoindex effect
4. Identify the error in this nginx configuration snippet:
server {
listen 80
server_name example.com;
}
medium
A. listen directive should be inside location block.
B. server_name directive cannot be inside server block.
C. Missing semicolon after listen 80 directive.
D. Curly braces are missing around listen directive.
Solution
Step 1: Check syntax of directives
Each directive must end with a semicolon in nginx configuration.
Step 2: Locate missing semicolon
The listen 80 directive is missing a semicolon at the end.
Final Answer:
Missing semicolon after listen 80 directive. -> Option C
Quick Check:
Every directive ends with ; [OK]
Hint: Check every directive ends with ; [OK]
Common Mistakes:
Forgetting semicolon at directive end
Misplacing directives outside server block
Adding unnecessary braces
5. You want to configure nginx to serve static files from /var/www/html for all requests under /static/. Which configuration block correctly achieves this?
hard
A. location /static/ {
alias /var/www/html/;
}
B. location /static {
alias /var/www/html;
}
C. location /static/ {
root /var/www/html;
}
D. location /static/ {
root /var/www/html/;
}
Solution
Step 1: Understand root vs alias
Root appends the request URI to the root path; alias replaces the location prefix with the alias path.
Step 2: Match location and alias usage
For prefix locations ending with /, alias must end with / to correctly map paths.
Step 3: Evaluate options
location /static/ {
alias /var/www/html/;
} uses location /static/ { alias /var/www/html/; } which correctly serves files under /static/ from /var/www/html.
Final Answer:
location /static/ {
alias /var/www/html/;
} -> Option A
Quick Check:
Use alias with trailing slash for prefix location [OK]
Hint: Use alias with trailing slash for prefix locations [OK]