使用 nodejs 模块 express-session with secure 不起作用

use nodejs module express-session with secure does not work

我使用带有 redis 连接和 nginx 代理的 express-session 模块。如果我将它与 secure: false 一起使用,则会设置 sid cookie。但是,如果我将其设置为安全,则不会。我直接使用 express and secure: true 设置了另一个 cookie,它有效。

Express 中的 Express-Session 配置:

//proxy configuration
app.set('trust proxy', 1); // trust first proxy (ngnix proxy)

//session

app.use(session({
    secret: 'to-secret-to-show',
    resave: false,
    saveUninitialized: true,
    rolling: true,
    cookie: {
        httpOnly: true,
        sameSite: 'strict',
        secure: secure
    },
    store: new RedisSessionStore({
        client: redis,
        ttl: 86400, //time to life, one day
    }),
}));

secure 是否设置为 true 或 false 取决于环境。我尝试直接将其设置为 true,但没有更改。

nginx 代理设置:

proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        #proxy_set_header X-Forwarded-Host $http_host;

        proxy_pass http://nodejs;
        proxy_redirect off;

当我查看 Dokumentation 文件时,它应该是正确的。我忘了什么吗?我无法进行繁重的测试,因为我只有带安全连接的实时系统。

尝试添加 X-Forwarded-Proto header:

proxy_set_header X-Forwarded-Proto $scheme;

这就是 express-session 确定与 nginx 的连接是否安全的方式。