2016-09-03 7 views
0

Я использую модуль экспресс-сессии с соединением redis и прокси-сервером nginx. Если я использую его с безопасным: false, устанавливается sid cookie. Но если я установил его для обеспечения, это не так. Я устанавливаю другой файл cookie напрямую с помощью выражения и безопасности: true, и он работает.use nodejs модуль express-session с защитой не работает

конфигурации Экспресс-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 
    }), 
})); 

Если безопасный установлен истинным или ложным depents на envirement. Я пытаюсь установить его прямо в true, но не делает chnage.

настройки 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

Try добавляя X-Forwarded-Proto заголовок:

proxy_set_header X-Forwarded-Proto $scheme; 

Это как express-session определяет, если подключение к Nginx был безопасным.