在快速应用程序之间共享会话(connect-mongodb)

所以我的最终目标是让多个节点应用程序连接到同一个数据库并在用户之间共享会话。 所以,如果你从一个应用程序注销,它会将你从所有的应用程序中注销,login也一样。所以这是在我的开发环境中工作。 我有两个节点快速应用程序连接到同一个Mongo会话数据库,所以我可以login到一个应用程序,另一个自动识别会话并login。我已经推送到我们的活CentOS服务器,并使用PM2和Nginx为它服务。 它目前正在为每个应用程序创build一个新的会话条目。 这两个应用程序使用相同的数据库会话和用户。 我可以在实时会话数据库中看到每个应用程序都有一个单独的会话。 因此,我必须立即login到每个应用程序,而不是一个。 这与Nginx有关,因为这在本地是有效的。

注意:我正在使用connect-mongodb会话

这是我的每个快速应用程序中的main.js文件(除端口#外都相同):

var MongoDBStore = require('connect-mongodb-session')(express.session); var configDB = require('./config/database.js'); var env = require('./config/env.js'); if(env.location == 'test'){ var store = new MongoDBStore({ uri: configDB.sessions_url, collection: 'sess' }); }else if(env.location == 'live'){ var store = new MongoDBStore({ uri: configDB.sessions_url_live, collection: 'sess' }); } // Catch errors store.on('error', function(error) { assert.ifError(error); assert.ok(false); }); var app = express(); var port = process.env.PORT || 3008; var mongoose = require('mongoose'); var passport = require('passport'); var path = require('path'); app.configure(function() { app.use(express.cookieParser()); // read cookies (needed for auth) app.use(express.bodyParser()); // get information from html forms app.use(express.static(path.join(__dirname, '/static'))); app.use(express.session({ secret: 'supercoolpassword', cookie: { maxAge: 1000 * 60 * 60 * 24 * 7 // 1 week }, resave: true, saveUninitialized: true, store: store, name: "id", proxy: true })); app.use(passport.initialize()); app.use(passport.session()); // persistent login sessions }); 

这是我的nginx Conf。 我尝试在这里build议添加“proxy_set_header X-Forwarded-Proto $ scheme”:

 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; upstream my_nodejs_upstream { server orders.domain.com; keepalive 64; } server { listen 80; server_name orders.domain.com; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://localhost:3008; proxy_redirect off; proxy_read_timeout 240s; } } server { listen 443 ssl; server_name orders.domain.com; ssl_certificate "/etc/nginx/ssl/certs/nginx-selfsigned.crt"; ssl_certificate_key "/etc/nginx/ssl/private/nginx-selfsigned.key"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://localhost:3008; proxy_redirect off; proxy_read_timeout 240s; } } server { listen 80; server_name home.domain.com; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://localhost:3009; proxy_redirect off; proxy_read_timeout 240s; } } server { listen 443 ssl; server_name home.domain.com; ssl_certificate "/etc/nginx/ssl/certs/nginx-selfsigned.crt"; ssl_certificate_key "/etc/nginx/ssl/private/nginx-selfsigned.key"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_max_temp_file_size 0; proxy_pass http://localhost:3009; proxy_redirect off; proxy_read_timeout 240s; } } server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }