使用 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 的连接是否安全的方式。
我使用带有 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 的连接是否安全的方式。