NGNIX - Load Balancing
The upstream directive
The upstream directive defines groups of servers that can be referenced by the proxy_pass
, fastcgi_pass
, uwsgi_pass
, scgi_pass
, memcached_pass
, and grpc_pass
directives:
upstream testdomainapp {
server app1.testdomain.local:8085;
server app2.testdomain.local:8086 backup;
server app3.testdomain.local:8087 backup;
}
By default, requests are distributed between the servers using a weighted round-robin balancing method.
The location directive
The location
directive is the other part of the equation that enables the upstream
directive:
location /app {
proxy_pass http://testdomainapp/;
}
In this example, we are using the /app
location to front-end the testdomainapp
server group, defined in the upstream
directive.
The server directive
The server
directive defines an individual server that is part of the upstream
group:
upstream testdomainapp {
server app1.testdomain.local:8085 weight=3;
server app2.testdomain.local:8086;
server app3.testdomain.local:8087 backup;
}
There are may options available to define how each server is handled in the group. Server parameters available in the non-commercial NGINX offering include:
- weight=
- Sets the weight of the server, default=1 - max_conns=
- Limits active connections, default=0 - max_fails=
- Maximum unsuccessful connections, default=1 - fail_timeout=
- backup - Marks the server as a backup server
- down - Marks the server as a unavailable