2016-09-03 4 views
0

Ich verwende Express-Session-Modul mit Redis-Verbindung und Nginx-Proxy. Wenn ich es mit secure: false verwende, ist der sid cookie gesetzt. Aber wenn ich es absichern will, tut es das nicht. Ich setze einen anderen Cookie direkt mit Express und sicher: true und es funktioniert.Verwenden von Nodejs-Modul Express-Sitzung mit Sicherheit funktioniert nicht

Express-Session config in Express:

//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 
    }), 
})); 

Wenn sicher ist wahr oder falsch ist abhängig vom dem envirement gesetzt. Ich versuche es direkt auf wahr zu setzen, mache aber keine Änderungen.

nginx Proxy-Einstellungen:

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; 

Wenn ich mir Dokumentation Dateien, die es richtig sein sollte. Habe ich etwas vergessen? Ich kann nicht zu schweren Tests machen, weil ich nur mein Live-System mit sicheren Verbindungen habe.

Antwort

1

versuchen, ein X-Forwarded-Proto Header hinzufügen:

proxy_set_header X-Forwarded-Proto $scheme; 

Dies ist, wie express-session bestimmt, ob die Verbindung zum nginx sicher war.

Verwandte Themen