Além do Apache, o Nginx é o servidor web mais popular disponível. Além de ser um servidor web, também pode ser usado como balanceador de carga ou proxy reverso. Neste tutorial, Quantrimang.com mostrará como você pode usar o Nginx como proxy reverso.
O que é um proxy reverso?
Um servidor proxy atua como intermediário entre um cliente e outro servidor. O servidor proxy recupera recursos do servidor ao qual você deseja se conectar e os envia para visualização. Um proxy reverso funciona da mesma maneira, exceto que as funções são invertidas. Quando você solicita informações do servidor, o proxy reverso retém a solicitação e a envia ao servidor back-end apropriado. Isso permite que os administradores de sistema usem o servidor para vários aplicativos, além de garantir um fluxo de tráfego mais suave entre cliente e servidor.

Benefícios dos proxies reversos
Dependendo do seu aplicativo, você pode ter diferentes casos de uso de proxy reverso.
- Um proxy reverso permite que você execute vários aplicativos no mesmo servidor - Se você tiver vários aplicativos em execução no mesmo servidor, eles não poderão “escutar” todos ao mesmo tempo na porta 80 ou 433. Com um proxy reverso, você pode configurá-lo para redirecionar o tráfego para aplicativos individuais, se necessário.
- Balanceamento de carga – Se você tiver vários servidores executando o mesmo aplicativo, poderá usar um proxy reverso para distribuir o tráfego uniformemente para cada servidor.
- Firewall de aplicativos da Web - Você pode usar proxy reverso para ocultar seu aplicativo e também para filtrar IPs de spam ou proteger contra ataques DDOS .
- Fácil registro e auditoria – Como todo o tráfego de entrada é gerenciado por um proxy reverso, é mais fácil registrar e monitorar os fluxos de tráfego.
Configure o Nginx como um proxy reverso
Para configurar o Nginx como proxy reverso, o artigo usará o parâmetro proxy_pass no arquivo de configuração do Nginx.
Nota : Este tutorial pressupõe que você tenha algum conhecimento do Nginx e tenha instalado e configurado o Nginx em seu servidor.
Na maioria dos casos de uso, o Nginx será o servidor front-end, “ouvindo” a porta 80 (HTTP) ou 443 (HTTPS) para solicitações recebidas. Como só pode haver um serviço “escutando” na porta 80 ou 443, sua aplicação terá que “escutar” em outra porta, como a porta 8081. A configuração mais simples será semelhante a esta:
server {
listen 80;
listen [::]:80;
server_name myapp.com;
location / {
proxy_pass http://localhost:8081/;
}
}
Isso significa que todas as solicitações para myapp.com na porta 80 serão redirecionadas para a porta 8081.
Configurações avançadas
Além da diretiva proxy_pass , existem diversas outras diretivas que você pode usar para uma configuração mais avançada.
- proxy_set_header - Permite definir um cabeçalho para enviar ao aplicativo em segundo plano. Por exemplo, consulte a seguinte configuração:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Você pode definir os cabeçalhos de proxy necessários para passar ao aplicativo, informar o IP da solicitação e o endereço remoto e, em seguida, enviar o conteúdo correto para o site solicitante.
- tempo limite do proxy - permite definir o valor do tempo limite para enviar e receber solicitações de proxy. Por exemplo:
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
- proxy_buffers - Isso permite que o Nginx retenha temporariamente a resposta do servidor proxy e só a envie ao servidor solicitante depois que o servidor proxy terminar de responder. Por exemplo:
proxy_buffers 32 4k;
Se o seu aplicativo envia um grande número de arquivos, você pode desabilitar proxy_buffers:
proxy_buffering off;
Como você pode ver, Nginx é um servidor proxy reverso que tem muitos usos. A maior vantagem dele é que é simples de configurar, fácil de usar e ainda permite escalar em cenários mais complexos. Para obter mais detalhes, você pode ver a documentação do módulo proxy Nginx (em https://nginx.org/en/docs/http/ngx_http_proxy_module.html) ou exemplos de configuração (em https://www.nginx.com/resources/wiki /iniciar/tópicos/exemplos/completo/).
Espero que você tenha sucesso.