Upstream é um “pool” onde são declarados o conjunto de servidores que recebem o balanceamento de carga.
upstream pool-ufrj { server 192.168.0.1:80; server 192.168.0.2:80 weight=2; server 192.168.0.3:80 backup; server 192.168.0.4:80 down; }
weight
: Determina o peso do servidor no pool, diretamente proporcional a utilização. Quando não declarado, o valor é 1.backup
: Servidor do pool que entra em atividade quando os demais falham.down
: Servidor declarado como desativado pelo pool. Ideal para manutenção.Obs.: Apenas o servidor de gere o balanceamento de carga precisa de IP público.
Obs.: Este recurso não existe na versão em pacote do Nginx, portanto é necessário recompilar um Nginx com o módulo sticky
O recurso sticky é útil quando queremos que as sessões sejam mantidas no load balance. O sticky prende as requisições do usuário no servidor que iniciou a sessão evitando perdas repentinas de sessão. Esta diretiva é aplicada dentro do bloco
upstream
.
Mais detalhes sobre esta diretiva veja AQUI (seção Usage)
upstream pool-ufrj { sticky; [...] }
Sintaxe:
sticky [secure] [expires=t] [hash=h]
[secure]
: Session persistence apenas em HTTPS.[expires]
: Tempo (t) de expiração do sticky de sessão[hash]
: Determina o hash (h) criptográfico do cookie de sessão. Pode ser md5 ou sha1. Quando não informado o padrão é md5.upstream pool-ufrj { server 192.168.0.1:443 weight=2; # servidor01 server 192.168.0.2:443 weight=1; # servidor02 server 192.168.0.3:443 backup; # servidor03 } server { server_name meusite.ufrj.br listen 80; location / { proxy_pass https://pool-ufrj; index index.php index.html; }
* O upstream é informado na diretiva proxy_pass