Process Flow - IP-based access control (allow/deny)
Request arrives
Check client IP
Is IP allowed?
No→Is IP denied?
Allow request
The server checks the client's IP against allow and deny rules to decide if the request is allowed or blocked.
location / {
allow 192.168.1.0/24;
deny all;
}| Step | Client IP | Check allow | Check deny | Decision |
|---|---|---|---|---|
| 1 | 192.168.1.10 | Matches allow 192.168.1.0/24 | Not checked (allowed) | Allow request |
| 2 | 10.0.0.5 | No match | Matches deny all | Block request |
| 3 | 192.168.2.1 | No match | Matches deny all | Block request |
| 4 | 192.168.1.255 | Matches allow 192.168.1.0/24 | Not checked (allowed) | Allow request |
| 5 | 127.0.0.1 | No match | Matches deny all | Block request |
| 6 | End of requests | - | - | Stop checking |
| Variable | Start | After 1 | After 2 | After 3 | After 4 | After 5 | Final |
|---|---|---|---|---|---|---|---|
| client_ip | - | 192.168.1.10 | 10.0.0.5 | 192.168.2.1 | 192.168.1.255 | 127.0.0.1 | - |
| allow_check | - | true | false | false | true | false | - |
| deny_check | - | false | true | true | false | true | - |
| decision | - | allow | deny | deny | allow | deny | - |
IP-based access control in nginx: - Use 'allow <IP or CIDR>;' to permit IPs - Use 'deny <IP or all>;' to block IPs - Nginx checks allow rules first, then deny rules - If no allow matches, deny rules apply - 'deny all;' blocks all IPs not allowed - Order matters: allow then deny