Como obter o nginx para fazer proxy corretamente (incluindo autorizações básicas definidas nos cabeçalhos) um Apache?

1

Edit: Se você tem uma idéia sobre como melhorar a questão ou quais detalhes estão faltando, por favor, deixe um comentário.

Resultado esperado:

Estou tentando implantar o nginx como proxy reverso para permitir a exposição de arquivos servidos por um Apache, sem fornecer as credenciais básicas de autenticação exigidas pelo Apache. Meu plano é forneça as credenciais de autenticação básicas "estaticamente" nos cabeçalhos enviados do proxy para o Apache, para que o usuário possa acessar os arquivos sem ter (ou ver / saber) as credenciais.

Configuração:

O Apache requer autenticação básica via https. O proxy reverso a ser implantado é ele próprio intermediado por um nginx que manipula o tráfego de entrada para o host (docker). O nginx de entrada do host (docker) somente escuta no 443, o tráfego no / dentro do host (docker) é http.

Então a configuração é:

https >> [dockerhost ingress nginx] >> http >> [nginx reverse proxy] >> https >> [apache file server (basic auth)]

Estou usando a última imagem do docker nginx, não modificada (apenas adicionando o conf). Para o proxy de ingresso do dockerhost, estou usando o link . O Apache está servindo arquivos de uma caixa de armazenamento Hetzner . Não consigo ver ou alterar sua configuração, Hetzner diz que eles não podem me ajudar, já que não estão apoiando oficialmente esse tipo de configuração. Sua última resposta foi:

Our Apache doesn't need any specific headers. All which is necessary, is a request via the correct hostname (because of SNI) and the correct credentials via SLL/HTTPS at port 443.

Problema:

Diretamente, sem o proxy nginx, posso acessar os arquivos no Apache depois de passar o prompt de autenticação básico no navegador ou via curl.

Quando eu tento acessar os arquivos através do proxy e tentando passar as credenciais "estaticamente" como um cabeçalho na configuração do nginx, eu só recebo os 404s (do Apache).

Mas eu posso (e isso me engana) acessar os arquivos através do proxy ao proxy sem autenticação básica "estática" e apenas fornecendo minhas credenciais no prompt.

Parece que está passando a autenticação básica, mas não consegue acessar nenhum arquivo, o que me deixa confusa.

O que eu tentei:

Minha abordagem inicial era apenas usar o bloco de localização fornecido pelo @Shai aqui:

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"; 
}

Mas isso produz o comportamento descrito acima. Desde então, comecei a experimentar comentar e adicionar diretivas diferentes (por exemplo, aquelas fornecidas aqui: Como obter o nginx para passar o cabeçalho HTTP_AUTHORIZATION para o Apache ), mas sem sucesso.

Agradeço a QUALQUER ponteiros.

Felicidades, Vontade

    
por Wilhelm Uschtrin 12.04.2017 / 09:23

1 resposta

0

Tente o proxy usando credenciais explícitas:

proxy_pass http://user@secret:6.6.6.6:80;
    
por 01.02.2018 / 20:12