Minha estrutura de aplicativo usa o GKE e o CloudFlare. Parece assim:
CloudFlare -> GKE -> Ingress -> My app running nginx
Estou usando o SSL flexível no CloudFlare, portanto, somente a conexão entre o usuário e o CloudFlare usa HTTPS, todo o restante usa HTTP. Eu sei que o CloudFlare define o X-Forwarded-Proto
para https
nessa situação, mas quando vejo os cabeçalhos que meu aplicativo nginx está recebendo, ele recebe X-Forwarded-Proto: http
.
Tenho certeza de que isso acontece em algum lugar entre o Load Balancer do GKE e o Ingress, pois vejo que o cabeçalho CF-Visitor: {"scheme": "https"}
configurado pelo CloudFlare está definido como HTTPS. Meu entendimento é que isso significa que CloudFlare definiu X-Forwarded-Proto
para https
, mas foi sobrescrito ao longo do caminho.
Infelizmente, não consegui obter os logs de cabeçalho do GKE Load Balancer (parece que eles não registram os cabeçalhos X-Forwarded-*
), então não posso confirmar 100% que o CloudFlare está realmente definindo os cabeçalhos , mas eu ficaria muito surpreso se não for.
Se isso for verdade, o Google Cloud substituirá o cabeçalho X-Forwarded-Proto
por http
. Como posso evitar isso?
Editar: configurei um ingresso nginx em vez de um gce seguindo link e o X-Forwarded-Proto
está definido como https
conforme esperado. Este é outro sinal de que é o controlador de ingresso gce
que está sobrescrevendo o cabeçalho X-Forwarded-Proto
.