我正在使用ip_hash(Sticky Session),我的门户网站可以通过网络访问门户网站,我们有支持模块,它也托管在同一个门户网站上,上游负载均衡22个节点
关于第2点需要帮助。我也想为他们分配负载,因为有并发1000个用户工作表支持中心
我的配置看起来像
upstream appserver{
ip_hash;
server 192.168.0.x:3811;
server 192.168.0.x:3812;
server 192.168.0.x:3813;
server 192.168.0.x:3814;
server 192.168.0.x:3815;
server 192.168.0.y:3811;
server 192.168.0.y:3812;
server 192.168.0.y:3813;
server 192.168.0.y:3814;
server 192.168.0.y:3815;
...
...
}
server {
location "/support" {
allow ...;
deny all;
alias ...;
index index.html;
}
location / {
proxy_pass http://appserver;
proxy_cookie_path / "/; secure;";
proxy_set_header X-IBanking "127.0.0.1";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Request-Id $txid;
add_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security max-age=15552000;
proxy_http_version 1.1;
proxy_redirect off;
}
gzip on;
gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
gzip_buffers 16 8k;
gzip_vary on;
}
答案 0 :(得分:2)
我不认为单独使用nginx是可能的。 我正在使用带有redis的koa-generic-session。通过这种方式,所有节点都连接到redis以读取/写入会话值,并且只要该服务器连接到您的redis服务器,就会将用户跟踪到任何上游服务器。
此示例取自https://github.com/koajs/generic-session
var session = require('koa-generic-session');
var redisStore = require('koa-redis');
var koa = require('koa');
var app = koa();
app.keys = ['keys', 'keykeys'];
app.use(session({
store: redisStore()
}));
app.use(function *() {
switch (this.path) {
case '/get':
get.call(this);
break;
case '/remove':
remove.call(this);
break;
case '/regenerate':
yield regenerate.call(this);
break;
}
});
function get() {
var session = this.session;
session.count = session.count || 0;
session.count++;
this.body = session.count;
}
function remove() {
this.session = null;
this.body = 0;
}
function *regenerate() {
get.call(this);
yield this.regenerateSession();
get.call(this);
}
app.listen(8080);
这是我目前在多个上游环境中用于会话的内容。