Como posso configurar uma diretiva proxy_pass nginx que também incluirá informações de autenticação básica HTTP enviadas para o host proxy?
Este é um exemplo da URL que eu preciso fazer proxy para:
http://username:[email protected]/export?uuid=1234567890
O objetivo final é permitir que 1 servidor apresente arquivos de outro servidor (aquele para o qual estamos fazendo proxy) sem expor o URI do servidor proxy. Eu tenho isso funcionando 90% correto agora seguindo a configuração do Nginx encontrada aqui:
http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/
Eu só preciso adicionar a autenticação HTTP Basic para enviar para o servidor proxy
Eu escrevi sobre isso um tempo atrás. Veja os detalhes aqui:
http://shairosenfeld.blogspot.com/2011/03/authorization-header-in-nginx-for.html
Por exemplo:
"a2luZzppc25ha2Vk" é "king:isnaked" codificado em base64, então isso funcionaria para
http://king:[email protected]
Sinta-se à vontade para verificar a postagem do blog para obter mais detalhes.
Eu consegui isso trabalhando com a resposta do alvosu, mas tive que inserir a palavra "Basic" dentro da cotação da string base64 para que ficasse assim:
Definir
onde
USER_AND_PASS = base64(user:pass)
.Remova o cabeçalho de autorização que é encaminhado pelo nginx com
proxy_set_header Authorization "";
.Configurei o nginx para fazer autenticação básica, mas o
Authorization
cabeçalho estava sendo passado naproxy_pass
diretiva e o receptor não conseguiu lidar com o token.(Especifico para o meu caso, este erro foi retornado
Reason: No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
)