如何解决Nginx位置和子位置块
我对nginx并不十分了解,但是我足够了解。
最近我遇到了一个已解决的错误,但我想澄清为什么会发生这种情况。
所以我有几个节点应用程序,nginx充当对它们的反向代理。该网络服务器已使用HTTPS进行设置,并且其中一个应用程序具有一个登录页面,该页面带有用于持久化会话的mongoDB后端。
此应用程序的位置块为:
location /app/abcd {
proxy_pass http://localhost:3003;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
我还有另一个应用程序,该应用程序具有类似的位置块,但它被设置为指向根目录,如下所示:
location / {
proxy_pass http://localhost:3002;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
我的目标是,如果您转到app / abcd,则第一个应用程序将处理该请求,其他任何事情将由第二个应用程序处理。
除会话的持久性外,其他一切似乎都正常。如果我尝试转到/ app / abcd,它将可以很好地存储会话,但似乎用户在每次刷新页面时都会失去会话的所有权。
我的NodeJS会话代码如下:
app.set('trust proxy',1);
app.use(session({
secret: 'secret',resave: false,saveUninitialized: true,proxy: true,cookie: {
httpOnly: false,expires: false,maxAge: 1000000000000,secure: true
},store: new MongoStore({
mongooseConnection: db
})
}));
一旦我移除了指向位置的障碍物,它便开始起作用。我对nginx不太了解,无法了解它在幕后如何打破会话持久性,有人可以向我解释发生了什么吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。