Por que colocar um proxy reverso na frente de um servidor WSGI?

5

Uma configuração típica para implementar um aplicativo WSGI inclui um servidor WSGI (como uWSGI ou Gunicorn) atrás de um servidor da web de uso geral (como nginx) que atua como um proxy reverso. Uma das principais razões que eu conheço para ter um proxy reverso é servir eficientemente arquivos estáticos. Existem outras razões?

Suponha que meu aplicativo envolva apenas código Python e não se importe com conteúdo estático. Por que eu iria querer o proxy reverso neste caso? O uWSGI e o Gunicorn já fornecem um servidor HTTP assíncrono capaz de interagir com os clientes.

Existe algum caso prático em que seria melhor expor o servidor HTTP WSGI diretamente ao mundo externo?

    
por Vasiliy Faronov 04.09.2013 / 09:19

2 respostas

5
  • você tem mais opções de configuração com um proxy reverso completo como

    • reescrever
    • locais
    • servidor
    • link
    • limpeza de cabeçalhos
    • expira
    • gzip
    • ....
  • você pode fazer o balanceamento de carga

  • você pode usar proxy_cache
  • você pode implementar páginas de erro personalizadas, mesmo quando os servidores de aplicativos estão inativos
  • você pode ter um WAF implementado
  • você pode (às vezes) hotpatch contra vulnerabilidades

BONUSPOINT

  • você pode impressionar clientes com 100.000 solicitações / segundo (em hardware médio) com a seguinte configuração (nginx):

.

location /perftest/ {
    return 200;
}
    
por 04.09.2013 / 10:32
2

Vantagens adicionais ao uso de um proxy reverso.

Outros benefícios podem ser obtidos que PODEM ser benéficos para você.

  • Você pode ocultar informações da Internet (versão do servidor da web, servidor de aplicativos, servidor de banco de dados, api)
  • Você pode implementar várias tecnologias de servidor da web por trás de um domínio (Linux tomcat + Windows IIS etc)
  • Você pode encerrar conexões https / SSL e mapeá-las para serviços http internos.
  • Você pode centralizar todos os registros.
  • Você pode centralizar toda a prevenção de DDOS
  • Você pode implementar o gerenciamento de identidades na camada do servidor da Web.

Vantagens de segurança

  • Ocultar o servidor interno como acima.
  • Você pode fazer o roteador / firewall de seus servidores de aplicativos internos e servidores de banco de dados da Internet sem recorrer a firewalls de software no host (chamado de DMZ).
  • Você pode proteger um servidor que não pode ser imediatamente corrigido de problemas conhecidos (firewall de aplicativo da web) ou padrões de ataque conhecidos.
por 06.03.2014 / 21:28