Como usar o nginx como proxy para um host que requer autenticação?

40

Como posso configurar uma diretiva nginx proxy_pass que também inclua informações de autenticação HTTP Basic enviadas ao host proxy?

Este é um exemplo da URL para a qual eu preciso fazer proxy:

http://username:[email protected]/export?uuid=1234567890

O objetivo final é permitir que 1 servidor apresente arquivos de outro servidor (aquele ao qual estamos fazendo proxy) sem expor o URI do servidor proxy. Eu tenho este trabalho 90% correto agora de seguir a configuração Nginx encontrada aqui:

link

Eu só preciso adicionar a autenticação básica HTTP para enviar para o servidor proxy

    
por bwizzy 03.02.2011 / 17:53

3 respostas

18

Eu consegui isso trabalhando com a resposta do alvosu, mas eu tive que digitar a palavra "Basic" dentro da citação da string base64, então ficou assim:

proxy_set_header Authorization "Basic dGVzdHN0cmluZw==";
    
por 03.02.2011 / 21:53
51

Eu fiz um writeup sobre isso há um tempo atrás. Veja os detalhes aqui:

link

Por exemplo:

 location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://6.6.6.6:80;
    proxy_set_header Authorization "Basic a2luZzppc25ha2Vk";
 }

"a2luZzppc25ha2Vk" é "king: isnaked" base64 codificado, então isso funcionaria para

link

Sinta-se à vontade para conferir a postagem no blog para mais detalhes.

    
por 30.12.2011 / 07:31
4

Defina proxy_set_header Autorização "USER_AND_PASS", em que USER_AND_PASS = base64 (usuário: pass)

    
por 03.02.2011 / 18:01