0
0
Nginxdevops~10 mins

Connection limiting (limit_conn) in Nginx - Step-by-Step Execution

Choose your learning style9 modes available
Process Flow - Connection limiting (limit_conn)
Client sends request
Check current connections count
Is count < limit?
NoReject connection with error
Yes
Allow connection
Process request
Connection closes, decrement count
This flow shows how nginx checks the number of active connections per key and either allows or rejects new connections based on the limit.
Execution Sample
Nginx
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 2;

server {
  listen 80;
  location / {
    proxy_pass http://backend;
  }
}
This config limits each client IP to 2 simultaneous connections to the server.
Process Table
StepClient IPCurrent ConnectionsCondition (connections < 2?)ActionResult
1192.168.1.1000 < 2 = YesAllow connectionConnection accepted, count=1
2192.168.1.1011 < 2 = YesAllow connectionConnection accepted, count=2
3192.168.1.1022 < 2 = NoReject connectionConnection rejected with 503 error
4192.168.1.1100 < 2 = YesAllow connectionConnection accepted, count=1
5192.168.1.101 (after one closes)1 < 2 = YesAllow connectionConnection accepted, count=2
6192.168.1.1022 < 2 = NoReject connectionConnection rejected with 503 error
💡 Connections rejected when client IP reaches limit of 2 active connections.
Status Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5After Step 6
connections_192.168.1.100122122
connections_192.168.1.110000111
Key Moments - 2 Insights
Why does the connection get rejected at step 3 even though the client is the same?
At step 3, the current connections for 192.168.1.10 is already 2, which equals the limit. The condition 'connections < 2' is false, so nginx rejects the new connection as shown in the execution_table row 3.
What happens when one connection closes for a client IP?
When a connection closes, nginx decrements the count for that client IP. For example, after step 4, one connection from 192.168.1.10 closed, reducing its count from 2 to 1, allowing new connections again as seen in step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the connection count for 192.168.1.10 at step 2?
A1
B0
C2
D3
💡 Hint
Check the 'Current Connections' column for step 2 in the execution_table.
At which step does nginx reject a connection from 192.168.1.10 due to limit reached?
AStep 1
BStep 3
CStep 4
DStep 5
💡 Hint
Look for 'Reject connection' action for 192.168.1.10 in the execution_table.
If the limit was increased to 3, what would happen at step 3?
AConnection would be rejected
BNo change, connection count resets
CConnection would be allowed
DServer would crash
💡 Hint
Refer to the condition 'connections < limit' in the execution_table and imagine limit=3.
Concept Snapshot
limit_conn_zone defines a shared memory zone keyed by client IP.
limit_conn sets max simultaneous connections per key.
Nginx checks current connections before accepting new ones.
If limit reached, new connections are rejected with error.
Counts decrement when connections close.
Useful to protect server from overload by single clients.
Full Transcript
This visual execution shows how nginx limits simultaneous connections per client IP using limit_conn. When a client connects, nginx checks how many active connections that IP has. If below the limit, nginx allows the connection and increments the count. If the limit is reached, nginx rejects the new connection with an error. When a connection closes, nginx decrements the count. The example limits each IP to 2 connections. Steps show connections accepted or rejected based on this limit, helping prevent overload from too many connections by one client.