Nginx: Proxy HTTP para o recurso Https

1

Estou em uma situação em que preciso fazer proxy de todas as solicitações para /mypath/ to external-site.com . Para que as solicitações de rede funcionem no servidor, preciso passar pelo http://external-proxy.com . Isso funciona bem quando estou acessando http://external-site.com , mas não posso forçar o external-site.com a ser carregado sobre https . Abaixo está o nginx.conf que eu tentei.

location /mypath/ {
    proxy_pass       http://external-proxy.com:8080/;
    proxy_set_header Host external-site.com;

    # Trying to load https://external-site.com (instead of http)
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection "upgrade";
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Scheme $scheme;
}

Se você olhar para Proxy reverso do proxy Nginx passa por trás do firewall corporativo , esta mesma pergunta é feita nos comentários:

That's good, but what if the destination protocol is HTTPS? I couldn't find a way to override that

    
por Dehli 02.11.2017 / 20:31

1 resposta

0

Demorei um pouco para ver o truque sujo com o http que você usou. Mas isso não funciona com https.

  1. As duas linhas de configuração de atualização são exclusivas para suporte a WebSockets. Esses são irrelevantes aqui, eles não fornecem https para esse proxy externo.
  2. Você precisa forçar o nginx a usar o verbo HTTP CONNECT embaixo. Eu não sei como, mas vejo que você não está fazendo isso em lugar algum.
por 24.02.2018 / 11:39

Tags