📖 Scenario: You are managing a website that gets many visitors. To keep the website fast and reliable, you want to share the visitors' requests across multiple servers. This is called load balancing. It helps avoid one server getting too busy while others are free.
🎯 Goal: You will create a simple Nginx configuration that shows how load balancing sends traffic to two backend servers. You will set up the servers list, configure the load balancer, and then print the configuration to see how traffic is distributed.
📋 What You'll Learn
Create an Nginx upstream block named backend with two servers: server1.example.com and server2.example.com
Add a load balancing method using the round_robin technique (default in Nginx)
Configure the server block to proxy requests to the backend upstream
Print the final Nginx configuration to verify the load balancing setup
💡 Why This Matters
🌍 Real World
Websites and applications use load balancing to handle many users smoothly by sharing the work across servers.
💼 Career
Knowing how to configure load balancing in Nginx is a key skill for DevOps engineers and system administrators to ensure high availability and performance.
Progress0 / 4 steps
1
Create the upstream servers list
Create an Nginx upstream block named backend with these two servers exactly: server1.example.com and server2.example.com.
Nginx
Hint
Use the upstream directive to list servers for load balancing.
2
Add the server block to proxy requests
Add an Nginx server block that listens on port 80 and proxies all requests to the backend upstream group.
Nginx
Hint
Use proxy_pass inside location / to send traffic to the upstream group.
3
Explain the load balancing method
Add a comment inside the upstream backend block explaining that Nginx uses the default round_robin load balancing method to distribute traffic evenly.
Nginx
Hint
Write a clear comment inside the upstream block about the load balancing method.
4
Print the final Nginx configuration
Print the entire Nginx configuration to show how traffic is distributed to the two servers using load balancing.
Nginx
Hint
Use print() statements to output each line of the configuration exactly.
Practice
(1/5)
1. Why does Nginx use load balancing to distribute traffic across multiple servers?
easy
A. To increase the size of the server's hard drive
B. To prevent any single server from becoming overloaded and improve response time
C. To reduce the number of servers needed
D. To make the website design look better
Solution
Step 1: Understand the purpose of load balancing
Load balancing spreads incoming requests across multiple servers to avoid overloading one server.
Step 2: Recognize the benefit of spreading traffic
By distributing traffic, servers handle requests faster and the service stays stable.
Final Answer:
To prevent any single server from becoming overloaded and improve response time -> Option B
Quick Check:
Load balancing improves speed and stability [OK]
Hint: Load balancing shares work to keep servers fast and stable [OK]
Common Mistakes:
Thinking load balancing increases server storage
Believing it reduces the number of servers needed
Confusing load balancing with website design
2. Which of the following is the correct syntax to define a load balancing group in Nginx?
easy
A. server_group backend { 192.168.1.10; 192.168.1.11; }
B. loadbalance backend { server 192.168.1.10; server 192.168.1.11; }
C. upstream backend { server 192.168.1.10; server 192.168.1.11; }
D. proxy_pass backend { server 192.168.1.10; server 192.168.1.11; }
Solution
Step 1: Identify Nginx load balancing syntax
Nginx uses the upstream block to define a group of servers for load balancing.
Step 2: Check the correct block and server entries
The correct syntax is upstream backend { server IP; server IP; } to list servers.
Final Answer:
upstream backend { server 192.168.1.10; server 192.168.1.11; } -> Option C
Quick Check:
Use upstream for server groups [OK]
Hint: Remember: 'upstream' defines server groups in Nginx [OK]
Common Mistakes:
Using 'loadbalance' instead of 'upstream'
Writing 'server_group' which is invalid
Misusing 'proxy_pass' inside server group
3. Given this Nginx config snippet, what happens when a client sends a request?
upstream backend {
server 192.168.1.10;
server 192.168.1.11;
}
server {
location / {
proxy_pass http://backend;
}
}
medium
A. The request is distributed between 192.168.1.10 and 192.168.1.11
B. The request is sent to only 192.168.1.10 every time
C. The request is blocked because of missing proxy settings
D. The request is sent to 192.168.1.11 only
Solution
Step 1: Understand the upstream block
The upstream backend defines two servers to share traffic.
Step 2: Analyze proxy_pass usage
The proxy_pass http://backend; sends requests to the upstream group, distributing load.
Final Answer:
The request is distributed between 192.168.1.10 and 192.168.1.11 -> Option A
Quick Check:
Requests split across servers [OK]
Hint: proxy_pass to upstream sends requests to all servers [OK]
Common Mistakes:
Thinking requests always go to first server
Assuming proxy_pass blocks requests without extra config
Believing requests go to only one fixed server
4. You configured Nginx load balancing but all traffic goes to one server only. What is the likely cause?
medium
A. The upstream block has only one server listed
B. The load balancing method is set to 'ip_hash'
C. The servers are offline
D. The proxy_pass URL does not match the upstream name
Solution
Step 1: Check upstream and proxy_pass names
If proxy_pass points to a different name than the upstream block, load balancing won't work.
Step 2: Understand traffic routing
Requests will not be distributed if proxy_pass does not reference the correct upstream group.
Final Answer:
The proxy_pass URL does not match the upstream name -> Option D
Quick Check:
proxy_pass must match upstream name [OK]
Hint: proxy_pass name must match upstream block name exactly [OK]
Common Mistakes:
Ignoring mismatch between proxy_pass and upstream name
Assuming offline servers cause all traffic to one server
Confusing load balancing methods with traffic distribution issues
5. You want to ensure Nginx distributes traffic evenly but also keeps a user's requests on the same server. Which load balancing method should you use?
hard
A. ip_hash
B. least_conn
C. random
D. round_robin
Solution
Step 1: Understand load balancing methods
round_robin distributes evenly but does not keep user sessions on one server.
Step 2: Identify method that keeps user on same server
ip_hash uses client IP to send requests to the same server, maintaining session consistency.
Final Answer:
ip_hash -> Option A
Quick Check:
ip_hash keeps user on same server [OK]
Hint: Use ip_hash to stick users to one server [OK]
Common Mistakes:
Choosing round_robin for session persistence
Confusing least_conn with user stickiness
Thinking random method keeps sessions consistent
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.