2016-09-03 35 views
0

我使用带有redis连接和nginx代理的express-session模块。如果我使用它安全:false sid cookie设置。但是,如果我设定它来保证它不会。我使用快速和安全的方式直接设置另一个cookie:true和它的工作原理。使用nodejs模块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 
    }), 
})); 

如果安全设置对envirement真或假depents。我尝试将其直接设置为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文件应该是正确的。我忘了什么吗?我无法进行沉重的测试,因为我只有带有安全连接的现场系统。

回答

1

尝试添加X-Forwarded-Proto头:

proxy_set_header X-Forwarded-Proto $scheme; 

这是如何express-session确定是否到nginx的连接是安全的。