📖 Scenario: You are setting up a simple web server environment where multiple backend servers handle user requests. To make sure the traffic is distributed efficiently, you want to use the least connections method in Nginx. This method sends new requests to the server with the fewest active connections, helping balance the load better.
🎯 Goal: Build an Nginx configuration that uses the least_conn load balancing method to distribute requests between two backend servers.
📋 What You'll Learn
Create an upstream block named backend with two servers: server1.example.com and server2.example.com
Configure the upstream block to use the least_conn load balancing method
Set up a server block that listens on port 80 and proxies requests to the backend upstream
Add a location / block inside the server block to proxy pass requests
💡 Why This Matters
🌍 Real World
Web applications often run on multiple servers to handle many users. Using least connections load balancing helps keep the servers from getting overloaded by sending new users to the least busy server.
💼 Career
DevOps engineers and system administrators configure load balancers like Nginx to ensure high availability and performance of web services.
Progress0 / 4 steps
1
Create the upstream block with backend servers
Create an upstream block named backend with these two servers exactly: server1.example.com and server2.example.com.
Nginx
Hint
Use the upstream directive to group backend servers.
2
Add least connections load balancing method
Modify the upstream backend block to use the least_conn load balancing method by adding least_conn; inside the block.
Nginx
Hint
Place least_conn; as the first line inside the upstream block.
3
Create server block to listen on port 80 and proxy requests
Create a server block that listens on port 80 and contains a location / block that proxies requests to http://backend using proxy_pass.
Nginx
Hint
Use listen 80; inside the server block and proxy_pass http://backend; inside the location / block.
4
Output the complete Nginx configuration
Print the complete Nginx configuration including the upstream backend block with least_conn and the server block that proxies requests.
Nginx
Hint
Output the entire configuration exactly as built in previous steps.
Practice
(1/5)
1. What does the least_conn directive do in an nginx upstream block?
easy
A. Sends new requests to the server with the fewest active connections
B. Sends new requests to the server with the fastest response time
C. Sends new requests to servers in a round-robin order
D. Sends new requests to the server with the most active connections
Solution
Step 1: Understand the purpose of least_conn
The least_conn directive is used to balance load by sending requests to the server with the fewest active connections.
Step 2: Compare with other load balancing methods
Other methods like round-robin or fastest response time differ; least_conn focuses on active connections count.
Final Answer:
Sends new requests to the server with the fewest active connections -> Option A
Quick Check:
Least connections = fewest active connections [OK]
Hint: Least connections means pick server with fewest active users [OK]
Common Mistakes:
Confusing least connections with round-robin
Thinking it picks fastest server instead
Assuming it sends to server with most connections
2. Which of the following is the correct syntax to enable least connections load balancing in nginx?
easy
A. upstream backend { least_conn; server 192.168.1.1; }
B. upstream backend { least_connections; server 192.168.1.1; }
C. upstream backend { least_conn_load; server 192.168.1.1; }
D. upstream backend { leastconn; server 192.168.1.1; }
Solution
Step 1: Recall the exact directive name
The correct directive to enable least connections is least_conn inside the upstream block.
Step 2: Verify syntax correctness
Options A, B, and D use incorrect directive names or misspellings.
Final Answer:
upstream backend { least_conn; server 192.168.1.1; } -> Option A
Quick Check:
Correct directive = least_conn [OK]
Hint: Use exact directive name 'least_conn' inside upstream block [OK]
Common Mistakes:
Using 'least_connections' instead of 'least_conn'
Misspelling the directive as 'leastconn' or 'least_conn_load'
Placing directive outside the upstream block
3. Given this nginx upstream configuration: <pre>upstream backend {
least_conn;
server 10.0.0.1;
server 10.0.0.2;
}
If 10.0.0.1 has 5 active connections and 10.0.0.2 has 3 active connections, where will the next request be sent?
medium
A. To 10.0.0.1 because it is listed first
B. To both servers equally
C. To 10.0.0.2 because it has fewer active connections
D. To 10.0.0.1 because it has more active connections
Solution
Step 1: Identify the load balancing method
The least_conn method sends requests to the server with the fewest active connections.
Step 2: Compare active connections of servers
10.0.0.1 has 5 connections, 10.0.0.2 has 3 connections, so the next request goes to 10.0.0.2.
Final Answer:
To 10.0.0.2 because it has fewer active connections -> Option C
Quick Check:
Least connections picks server with 3 connections [OK]
Hint: Pick server with smallest active connections count [OK]
Common Mistakes:
Choosing server listed first instead of fewest connections
Assuming equal distribution regardless of connections
Picking server with more connections by mistake
4. You configured nginx with least_conn but all requests keep going to the same server. What is the most likely cause?
medium
A. The servers have equal active connections, so nginx picks the first server always
B. The least_conn directive is misspelled in the config
C. The upstream block is missing the server directives
D. The nginx service was not reloaded after configuration change
Solution
Step 1: Check if configuration changes are active
If nginx is not reloaded after config changes, old settings remain active causing unexpected behavior.
Step 2: Consider other causes
Misspelling or missing servers cause errors or no load balancing, but requests going to one server usually means config not applied.
Final Answer:
The nginx service was not reloaded after configuration change -> Option D
Quick Check:
Reload nginx after config changes [OK]
Hint: Always reload nginx after config edits to apply changes [OK]
Common Mistakes:
Ignoring the need to reload nginx after config update
Assuming equal connections cause all traffic to one server
Not verifying server directives exist in upstream block
5. You have three backend servers with varying response times and active connections:
Server A: 2 active connections, slow response
Server B: 5 active connections, fast response
Server C: 2 active connections, medium response
Using least_conn load balancing, which server will receive the next request and why?
hard
A. Requests will be evenly distributed among all servers
B. Server A, because it has the fewest active connections and slow response is ignored
C. Server C, because it has the fewest active connections and better response than A
D. Server B, because it has the fastest response time despite more connections
Solution
Step 1: Understand least_conn prioritizes active connections
It sends requests to servers with the fewest active connections, ignoring response time.
Step 2: Compare servers with fewest connections
Server A and C both have 2 connections, but least_conn does not consider response speed, so it picks the first with fewest connections, Server A.
Final Answer:
Server A, because it has the fewest active connections and slow response is ignored -> Option B
Quick Check:
Least connections ignores speed, picks fewest active connections [OK]
Hint: Least connections ignores speed; picks server with fewest active connections [OK]
Common Mistakes:
Assuming fastest response server is chosen with least_conn
Thinking least_conn balances by response time
Expecting even distribution regardless of connections
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.