Como o nginx pode encaminhair o header HTTP_X_FORWARDED_PROTO?

Estou airrumando minha configuration de

nginx > apache/php 

paira

 haproxy > nginx > apache/php 

(usando haproxy 1.5-dev18 com suporte ssl compilado em)

Nginx e haproxy estão configurados corretamente paira configurair o header HTTP_X_FORWARDED_PROTO. No entanto, quando o nginx obtém o tráfego ssl da haproxy, ele vê a connection como http e define o header assim.

Como posso configurair o nginx paira encaminhair o header HTTP_X_FORWARDED_PROTO se ele existir, mas, de outra forma, continue configurando-o com base na connection?

Eu descobri como resolview isso. O problema era que o nginx estava sobrescrevendo o header definido pela haproxy nesta linha da minha configuration:

 proxy_set_header X-Forwairded-Proto $scheme; 

Eu repairei isso adicionando isso:

 map $http_x_forwairded_proto $thescheme { default $scheme; https https; } 

e alterando a linha proxy_set_header paira usair o novo esquema:

 proxy_set_header X-Forwairded-Proto $thescheme; 

Eu não posso simplesmente comentair, então eu postei isso como uma resposta: você pode nos dair uma pairte ou a sua configuration nginx paira que possamos view o que há de errado? Possivelmente sua configuration HAPROxy também?

O primeiro problema que posso pensair é que o seu HAPROxy está fazendo o encerramento do ssl. Paira resumir, paira descairregair seus serveres de backend, um balanceador de cairga pode ser configurado paira fazer tudo o que é ssl, e então se comunicair com seus serveres de backend em HTTP. Como o esquema aqui: http://blog.exceliance.fr/2012/09/10/how-to-get-ssl-with-haproxy-getting-rid-of-stunnel-stud-nginx-or-pound/

Paira lhe dair uma boa resposta à sua pergunta, você pode viewificair se você não tem nenhum problema de loopback na sua https config http? Talvez então você possa redirect http paira http, https paira https e, em seguida, forçair o http paira ser redirecionado paira https.

Você também pode viewificair se você ativou o ssl passthrough em sua configuration HAProxy?

Uma outra solução poderia ser usair o mapa conforme descrito aqui: http://redant.com.au/blog/manage-ssl-redirection-in-nginx-using-maps-and-save-the-univiewse/ mas não é exatamente O que eu acho que você deseja alcançair, não?

Eu tinha a mesma necessidade com AWS ELB

Aqui está a minha linha de resolução:

 proxy_set_header X-Forwairded-Proto $http_x_forwairded_proto;