Proxy reverso NGINX para HTTP

0

Eu tenho o apache atrás de um proxy reverso NGINX que suporta ssl. Meu servidor apache de back-end ouve somente HTTP, então eu uso:

proxy_pass http://realip:8888;

no entanto, isso quebra o site porque todas as URLs vão para http, e o Chrome não permite que o HTTP seja carregado por HTTPS. Como posso definir o cabeçalho como "https: //" ao enviar "http" para o servidor back-end apache?

    
por NerdOfLinux 19.12.2017 / 18:51

1 resposta

0

A melhor maneira de corrigir isso é com o aplicativo backend. (Sem saber nada sobre o aplicativo de back-end, tentarei dar uma resposta geral.)
Aqui estão duas opções:

  1. Configure ou modifique o aplicativo da web de back-end para usar "https" ao criar links em vez de detectar o protocolo realmente usado.

  2. (melhor opção) Configure ou modifique o aplicativo da web de back-end para usar o X-Forwarded-Proto cabeçalho ao construir links. Esse cabeçalho seria definido no proxy nginx da seguinte forma: proxy_set_header X-Forwarded-Proto $scheme; Algumas instalações, como os pacotes do Ubuntu, fornecem isso no fragmento proxy_params e podem ser incluídas assim: 'include proxy_params'.

Ambas as opções exigem que o aplicativo da web de backend ofereça suporte especificamente a isso ou você possa modificá-las.

Se o aplicativo da web de back-end estiver criando links com base no protocolo usado para contatá-lo, como $_SERVER['SERVER_PROTOCOL'] para php, não será possível alterá-lo apenas com o proxy nginx.

    
por 19.12.2017 / 21:19