✨ feat(37回调): 添加大区集中转发接口
This commit is contained in:
46
gm-server/config/config.sq2.ts
Normal file
46
gm-server/config/config.sq2.ts
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
|
||||||
|
import defaultConfig from './config.default';
|
||||||
|
|
||||||
|
export default (appInfo: EggAppInfo) => {
|
||||||
|
const config = {} as PowerPartial<EggAppConfig>;
|
||||||
|
|
||||||
|
// add your special config in here
|
||||||
|
|
||||||
|
config.mongoose = {
|
||||||
|
url: 'mongodb://dbop:zyzSQ2021@dds-8vb7d5060bb271d41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7d5060bb271d42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7d5060bb271d43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-508112745', // 内网
|
||||||
|
options: { useNewUrlParser: true, useUnifiedTopology: true },
|
||||||
|
};
|
||||||
|
|
||||||
|
config.gmmongoose = {
|
||||||
|
url: 'mongodb://dbop:zyzSQGm2021@dds-8vb5de93552a67941.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5de93552a67942.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5de93552a67943.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?readPreference=secondary&replicaSet=mgset-508112742', // 内网
|
||||||
|
options: { useNewUrlParser: true, useUnifiedTopology: true },
|
||||||
|
};
|
||||||
|
|
||||||
|
config.redis = {
|
||||||
|
url: 'r-8vb7l1s8ne4vm6v6x6.redis.zhangbei.rds.aliyuncs.com', // 内网
|
||||||
|
pw: 'PANl3Vr2eozkq4N2'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
config.customLogger = {
|
||||||
|
linkLogger: {
|
||||||
|
file: '/zyz_logs/gm-server/link-log.log',
|
||||||
|
formatter(meta) {
|
||||||
|
return `[${meta.level}] [${meta.date}] ${meta.message}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
config.logrotator = {
|
||||||
|
filesRotateBySize: [
|
||||||
|
'/zyz_logs/gm-server/link-log.log',
|
||||||
|
],
|
||||||
|
maxFileSize: 1024,
|
||||||
|
};
|
||||||
|
|
||||||
|
// the return config will combines to EggAppConfig
|
||||||
|
return {
|
||||||
|
...defaultConfig(appInfo),
|
||||||
|
...config,
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -33,7 +33,7 @@ elif [ ${1} == 'sq1' ] ; then
|
|||||||
elif [ ${1} == 'sq2' ] ; then
|
elif [ ${1} == 'sq2' ] ; then
|
||||||
destUrl="root@sq2:/root/zyz/"
|
destUrl="root@sq2:/root/zyz/"
|
||||||
port=3737
|
port=3737
|
||||||
env='sq1'
|
env='sq2'
|
||||||
elif [ ${1} == 'sq3' ] ; then
|
elif [ ${1} == 'sq3' ] ; then
|
||||||
destUrl="root@sq3:/root/zyz/"
|
destUrl="root@sq3:/root/zyz/"
|
||||||
port=3737
|
port=3737
|
||||||
|
|||||||
@@ -1,4 +1,67 @@
|
|||||||
|
import { RegionModel } from '@db/Region';
|
||||||
|
import { ServerlistModel } from '@db/Serverlist';
|
||||||
import proxy from 'egg-http-proxy-middleware';
|
import proxy from 'egg-http-proxy-middleware';
|
||||||
|
|
||||||
module.exports = proxy;
|
module.exports = () => {
|
||||||
|
return async function (ctx, next) {
|
||||||
|
if(!ctx.app.config.envToHost) {
|
||||||
|
let envToHost = new Map<string, string>();
|
||||||
|
let regions = await RegionModel.getAllRegion();
|
||||||
|
for(let { env, webHost } of regions) {
|
||||||
|
envToHost.set(env, webHost);
|
||||||
|
}
|
||||||
|
ctx.app.config.envToHost = envToHost;
|
||||||
|
}
|
||||||
|
if(!ctx.app.config.sidToHost) {
|
||||||
|
let envToHost = ctx.app.config.envToHost||new Map();
|
||||||
|
let sidToHost = new Map<string, string>();
|
||||||
|
let servers = await ServerlistModel.getAllServerList();
|
||||||
|
for(let { id, env } of servers) {
|
||||||
|
let webHost = envToHost.get(env);
|
||||||
|
sidToHost.set(id.toString(), webHost);
|
||||||
|
}
|
||||||
|
ctx.app.config.sidToHost = sidToHost;
|
||||||
|
}
|
||||||
|
|
||||||
|
let options = {};
|
||||||
|
for(let [env, webHost] of ctx.app.config.envToHost) {
|
||||||
|
options[`/web/${env}/`] = {
|
||||||
|
target: webHost,
|
||||||
|
changeOrigin: true,
|
||||||
|
secure: true,
|
||||||
|
pathRewrite: function(path) {
|
||||||
|
console.log('proxy', path, path.replace(`/web/${env}/`, '/web/'))
|
||||||
|
return path.replace(`/web/${env}/`, '/web/')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(ctx.request.header['is-proxy'] != 'true') {
|
||||||
|
let url = getProxyUrl(ctx.request.url);
|
||||||
|
if(url) {
|
||||||
|
let sid = ctx.request.method == 'GET'? ctx.query.sid.toString(): ctx.request.body.sid.toString();
|
||||||
|
options[url] = {
|
||||||
|
target: ctx.app.config.sidToHost.get(sid),
|
||||||
|
changeOrigin: true,
|
||||||
|
secure: true,
|
||||||
|
headers: { "is-proxy": "true" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return proxy(options)(ctx, next);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function getProxyUrl(url: string) {
|
||||||
|
const urls = [
|
||||||
|
'/cb/treatusername',
|
||||||
|
'/cb/treatguildname',
|
||||||
|
'/cb/getguildbyuser',
|
||||||
|
'/cb/refundioscallback'
|
||||||
|
];
|
||||||
|
for(let str of urls) {
|
||||||
|
if(url && url.startsWith(str)) {
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,7 +18,7 @@ export default (appInfo: EggAppInfo) => {
|
|||||||
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',
|
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',
|
||||||
};
|
};
|
||||||
// add your egg config in here
|
// add your egg config in here
|
||||||
config.middleware = [ 'parmsDecode', 'getIp', 'proxy' ];
|
config.middleware = [ 'parmsDecode', 'getIp' ];
|
||||||
|
|
||||||
config.mongoose = {
|
config.mongoose = {
|
||||||
url: 'mongodb://dbop:zyzdbopbantu@dds-8vbdb47c6fb58a541.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vbdb47c6fb58a542.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-500808098', // 内网
|
url: 'mongodb://dbop:zyzdbopbantu@dds-8vbdb47c6fb58a541.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vbdb47c6fb58a542.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-500808098', // 内网
|
||||||
@@ -75,32 +75,6 @@ export default (appInfo: EggAppInfo) => {
|
|||||||
sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`,
|
sourceUrl: `https://github.com/eggjs/examples/tree/master/${appInfo.name}`,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
let regions = [ // 大区数据
|
|
||||||
{ env: 'stable', name: "常山少年", domain: 'http://zyz_gm.trgame.cn' },
|
|
||||||
{ env: 'alpha', name: "测试服", domain: 'http://pinus_gm_test.trgame.cn' },
|
|
||||||
{ env: 'dev', name: "开发服", domain: 'http://zyzdev_gm.trgame.cn' },
|
|
||||||
{ env: 'isbn', name: "办好福", domain: 'http://zyz_isbn_gm.trgame.cn' },
|
|
||||||
// 37测试服组
|
|
||||||
{ env: 'sq1', name: "37测试1服", domain: 'http://gm-sgzzyz.yev242.com' },
|
|
||||||
];
|
|
||||||
config.regions = regions;
|
|
||||||
|
|
||||||
let httpProxy: any = {};
|
|
||||||
for(let { env, domain } of regions) {
|
|
||||||
|
|
||||||
httpProxy[`/web/${env}/`] = {
|
|
||||||
target: domain,
|
|
||||||
changeOrigin: true,
|
|
||||||
secure: true,
|
|
||||||
pathRewrite: function(path) {
|
|
||||||
console.log('proxy', path, path.replace(`/web/${env}/`, '/web/'))
|
|
||||||
return path.replace(`/web/${env}/`, '/web/')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
config.proxy = httpProxy;
|
|
||||||
|
|
||||||
// the return config will combines to EggAppConfig
|
// the return config will combines to EggAppConfig
|
||||||
return {
|
return {
|
||||||
...config,
|
...config,
|
||||||
|
|||||||
13
web-server/config/config.distribute.ts
Normal file
13
web-server/config/config.distribute.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
|
||||||
|
import defaultConfig from './config.default';
|
||||||
|
|
||||||
|
export default (appInfo: EggAppInfo) => {
|
||||||
|
const config = {} as PowerPartial<EggAppConfig>;
|
||||||
|
config.middleware = [ 'parmsDecode', 'getIp', 'proxy' ];
|
||||||
|
|
||||||
|
// the return config will combines to EggAppConfig
|
||||||
|
return {
|
||||||
|
...defaultConfig(appInfo),
|
||||||
|
...config
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -16,24 +16,7 @@ export default (appInfo: EggAppInfo) => {
|
|||||||
url: '127.0.0.1', // 内网
|
url: '127.0.0.1', // 内网
|
||||||
pw: ''
|
pw: ''
|
||||||
};
|
};
|
||||||
let regions = [ // 大区数据
|
|
||||||
{ id: 1, env: 'development', name: "测试", domain: 'http://127.0.0.1:9000' },
|
|
||||||
];
|
|
||||||
config.regions = regions;
|
|
||||||
|
|
||||||
let httpProxy: any = {};
|
|
||||||
for(let { env, domain } of regions) {
|
|
||||||
httpProxy[`/web/${env}/`] = {
|
|
||||||
target: domain,
|
|
||||||
changeOrigin: true,
|
|
||||||
secure: true,
|
|
||||||
pathRewrite: function(path) {
|
|
||||||
console.log('proxy', path, path.replace(`/web/${env}/`, '/web/'))
|
|
||||||
return path.replace(`/web/${env}/`, '/web/')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
config.proxy = httpProxy;
|
|
||||||
config.decodeParm = true;
|
config.decodeParm = true;
|
||||||
|
|
||||||
// the return config will combines to EggAppConfig
|
// the return config will combines to EggAppConfig
|
||||||
|
|||||||
49
web-server/config/config.sq2.ts
Normal file
49
web-server/config/config.sq2.ts
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import { EggAppConfig, EggAppInfo, PowerPartial } from 'egg';
|
||||||
|
import defaultConfig from './config.default';
|
||||||
|
|
||||||
|
export default (appInfo: EggAppInfo) => {
|
||||||
|
const config = {} as PowerPartial<EggAppConfig>;
|
||||||
|
|
||||||
|
config.middleware = [ 'parmsDecode', 'getIp', 'proxy' ];
|
||||||
|
config.mongoose = {
|
||||||
|
url: 'mongodb://dbop:zyzSQ2021@dds-8vb7d5060bb271d41.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7d5060bb271d42.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb7d5060bb271d43.mongodb.zhangbei.rds.aliyuncs.com:3717/zyz?replicaSet=mgset-508112745', // 内网
|
||||||
|
options: { useNewUrlParser: true, useUnifiedTopology: true },
|
||||||
|
};
|
||||||
|
config.gmmongoose = {
|
||||||
|
url: 'mongodb://dbop:zyzSQGm2021@dds-8vb5de93552a67941.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5de93552a67942.mongodb.zhangbei.rds.aliyuncs.com:3717,dds-8vb5de93552a67943.mongodb.zhangbei.rds.aliyuncs.com:3717/zyzgm?readPreference=secondary&replicaSet=mgset-508112742', // 内网
|
||||||
|
options: { useNewUrlParser: true, useUnifiedTopology: true },
|
||||||
|
};
|
||||||
|
config.redis = {
|
||||||
|
url: 'r-8vb7l1s8ne4vm6v6x6.redis.zhangbei.rds.aliyuncs.com', // 内网
|
||||||
|
pw: 'PANl3Vr2eozkq4N2'
|
||||||
|
};
|
||||||
|
|
||||||
|
config.xtransit = {
|
||||||
|
server: 'ws://172.16.4.109:9092',
|
||||||
|
appId: 4,
|
||||||
|
appSecret: '4ce0f5d8561939271c1d8c5714a9d9eb'
|
||||||
|
};
|
||||||
|
|
||||||
|
config.customLogger = {
|
||||||
|
linkLogger: {
|
||||||
|
file: '/zyz_logs/web-server/link-log.log',
|
||||||
|
formatter(meta) {
|
||||||
|
return `[${meta.level}] [${meta.date}] ${meta.message}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
config.logrotator = {
|
||||||
|
filesRotateBySize: [
|
||||||
|
'/zyz_logs/web-server/link-log.log',
|
||||||
|
],
|
||||||
|
maxFileSize: 1024,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// the return config will combines to EggAppConfig
|
||||||
|
return {
|
||||||
|
...defaultConfig(appInfo),
|
||||||
|
...config
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -28,7 +28,8 @@
|
|||||||
"alpha": "cross-env EGG_SERVER_ENV=alpha npm run dev",
|
"alpha": "cross-env EGG_SERVER_ENV=alpha npm run dev",
|
||||||
"stable": "cross-env EGG_SERVER_ENV=stable npm run dev",
|
"stable": "cross-env EGG_SERVER_ENV=stable npm run dev",
|
||||||
"deve": "cross-env EGG_SERVER_ENV=dev npm run dev",
|
"deve": "cross-env EGG_SERVER_ENV=dev npm run dev",
|
||||||
"sq1": "cross-env EGG_SERVER_ENV=sq1 npm run dev"
|
"sq1": "cross-env EGG_SERVER_ENV=sq1 npm run dev",
|
||||||
|
"sq2": "cross-env EGG_SERVER_ENV=sq2 npm run dev"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/underscore": "^1.11.3",
|
"@types/underscore": "^1.11.3",
|
||||||
|
|||||||
Reference in New Issue
Block a user