Estamos definindo o secure
sinalizador em nossos cookies e o nginx se recusa a transmiti-los porque estamos nos comunicando com ele por HTTP.
Isso é perfeitamente compreensível, pois esse é o comportamento esperado. No entanto, na frente do nginx, executamos um Classic Load Balancer (anteriormente conhecido como Elastic Load Balancer) que aceita o tráfego HTTPS da Internet e se comunica com o nginx em nossa rede interna via HTTP.
Então, existe uma maneira de dizer ao nginx para não retirar os cookies, já que a conexão geral é confiável?
Tudo bem, antes de tudo, quando você estiver depurando um problema "estranho" com sessões baseadas em cookies HTTP, certifique-se de verificar se o
Set-Cookie
cabeçalho apropriado foi enviado pelo servidor!Quando você estabeleceu que não está sendo enviado (como eu fiz), você vai querer definir a variável
DEBUG
de ambiente como*
, caso esteja executando um aplicativo NodeJS/express.Se você fizer isso, poderá identificar a seguinte linha em seus logs:
Em seguida, você rastreará essa linha até cookie-session e, em seguida, até cookies . É quando você percebe que tudo isso tem a ver com expressar não tratar a conexão como confiável.
Portanto, o nginx não está removendo nenhum cookie. De certa forma, é a culpa embora. Encontrei a resposta na variável nginx $scheme por trás do load balancer . Para citar a resposta aceita:
Você colocaria isso na configuração do nginx e usaria
$real_scheme
em vez de$scheme
para oX-Forwarded-Proto
cabeçalho:Por padrão, o nginx não faz nenhum processamento relacionado ao
secure
sinalizador.