É uma boa prática definir cabeçalhos HTTP no balanceador de carga?

1

Estou gerenciando uma configuração onde há dois servidores de aplicativos ngnix atrás de um proxy reverso nginx. Gostaria de definir alguns cabeçalhos como X-XSS-Protection ou Strict-Transport-Security . Atualmente, ele é definido nos servidores de aplicativos e no balanceador de carga, o que faz com que os cabeçalhos sejam complicados.

Error parsing header X-XSS-Protection: 1; mode=block, 1; mode=block: expected semicolon at character position 14. The default protections will be applied. 

Eu posso ver que os valores do cabeçalho duplicado estão sendo anexados à mesma chave de cabeçalho. Minha pergunta é: qual é a convenção geral / prática recomendada para definir cabeçalhos? Devo definir cabeçalhos no back-end e removê-los do balanceador de carga ou o balanceador de carga deve ser o único cabeçalho de configuração?

    
por eternaltyro 01.11.2016 / 13:43

3 respostas

3

Na minha opinião, não importa onde os cabeçalhos estão definidos. A vantagem de configurar cabeçalhos no Nginx é que eles são muito simples de alterar, em comparação com a alteração de código, implantação, etc. Eu tive dois casos em que precisei reescrever cabeçalhos usando Nginx ou um balanceador de carga F5, eles dar muito mais flexibilidade.

Você precisaria dar um exemplo mais concreto para obter informações mais úteis, pois sua pergunta é muito ampla.

    
por 01.11.2016 / 19:15
1

Como desenvolvedor, eu diria também levar em conta os ambientes de desenvolvimento.

Temos apenas um balanceador de carga em nosso ambiente de produção e nosso principal ambiente de pré-produção e os ambientes de desenvolvimento não têm o balanceador de carga na frente deles. Por esse motivo, prefiro definir os cabeçalhos nos servidores da Web do NGinx para que eles também sejam configurados para ambientes de desenvolvimento.

Isso também depende se você encerrar o HTTPS: nos balanceadores de carga ou no Nginx ou em ambos? Pelo mesmo motivo (mantendo os ambientes consistentes), e para melhor segurança, terminamos o HTTPS no balanceador de carga e criptografamos novamente o tráfego para HTTPS entre os balanceadores de carga e nossos servidores da Web para que nos conectemos diretamente aos servidores da Web. HTTPS.

Se os servidores Web NGinx não estiverem em HTTPS, determinados cabeçalhos (HSTS) não devem ser configurados no servidor da Web, mas isso obviamente apresenta questões sobre como você pode desenvolver e testar o impacto desses cabeçalhos quando não os define. cabeçalhos em ambientes sem um balanceador de carga.

    
por 02.11.2016 / 13:55
0

Sim, já que é o trabalho do front-end de conexão para lidar com conexões. Seu aplicativo está ocupado com sua própria coisa, é melhor deixar todos os recursos apenas para fazer isso. SSL / TLS, cabeçalhos comuns, redirecionamentos, balanceamento, bloqueio, descarte, etc. é melhor tratado antes de atingir o aplicativo. Ele também fornece um bom ponto comum para configuração como bônus.

    
por 01.11.2016 / 23:05