Tudo bem, antes de tudo, quando você está depurando um problema "estranho" com sessões baseadas em cookie HTTP, certifique-se de verificar se o cabeçalho Set-Cookie
apropriado é enviado pelo servidor!
Quando você estabelece que não está sendo enviado (como eu), você vai querer definir a variável de ambiente DEBUG
to *
, caso você esteja executando um aplicativo NodeJS / express.
Se você fizer isso, poderá identificar a seguinte linha em seus registros:
cookie-session error saving session Cannot send secure cookie over unencrypted connection
Você rastreará essa linha até a sessão de cookies e depois, até os cookies . Que é quando você percebe que tudo isso tem a ver com expressar não tratar a conexão como confiável.
Então o nginx não está removendo nenhum cookie. De certa forma, é a culpa embora. Eu encontrei a resposta na variável nginx $ scheme por trás do load balancer . Para citar a resposta aceita:
# Sets a $real_scheme variable whose value is the scheme passed by the load
# balancer in X-Forwarded-Proto (if any), defaulting to $scheme.
# Similar to how the HttpRealIp module treats X-Forwarded-For.
map $http_x_forwarded_proto $real_scheme {
default $http_x_forwarded_proto;
'' $scheme;
}
Você poderia colocar isso em sua configuração nginx e usar $real_scheme
em vez de $scheme
para o cabeçalho X-Forwarded-Proto
:
proxy_set_header "X-Forwarded-Proto" $real_scheme;