Eu tenho o nginx configurado para ser meu servidor web visível externamente que se comunica com um back-end por HTTP.
O cenário que quero alcançar é:
- O cliente faz uma solicitação HTTP para o nginx, que é redirecionada para a mesma URL, mas por HTTPS
- Solicitação de proxies nginx por HTTP para o back-end
- O nginx recebe a resposta do back-end por HTTP.
- nginx passa isso de volta para o cliente por HTTPS
Minha configuração atual (onde o back-end está configurado corretamente) é:
servidor { ouça 80; server_name localhost; localização ~ .* { proxy_pass http://backend; proxy_redirect http://backend https://$host; proxy_set_header Host $host; } }
Meu problema é que a resposta ao cliente (etapa 4) é enviada por HTTP e não por HTTPS. Alguma ideia?
Estou usando a seguinte configuração em produção
O tipo de proxy que você está tentando configurar é chamado de proxy reverso. Uma pesquisa rápida por proxy reverso nginx me trouxe esta página:
http://intranation.com/entries/2008/09/using-nginx-reverse-proxy/
Além de adicionar alguns recursos úteis, como um cabeçalho X-Forwarded-For (que dará visibilidade ao seu aplicativo no IP de origem real), ele faz especificamente:
Boa sorte! :)