【发布时间】:2017-01-11 12:26:24
【问题描述】:
我使用带有 redis 连接和 nginx 代理的 express-session 模块。如果我将它与 secure: false 一起使用,则会设置 sid cookie。但是,如果我将其设置为安全,则不会。我直接使用 express 和 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 文件时,它应该是正确的。我忘记了什么吗?我无法进行繁重的测试,因为我只有具有安全连接的实时系统。
【问题讨论】:
标签: node.js security cookies nginx express-session