2016-09-03 38 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的連接是安全的。