diff --git a/web-server/app/middleware/getIp.ts b/web-server/app/middleware/getIp.ts index 42858203a..6d974c9a2 100644 --- a/web-server/app/middleware/getIp.ts +++ b/web-server/app/middleware/getIp.ts @@ -2,10 +2,17 @@ import { Context } from 'egg'; module.exports = () => { return async function parmsDecode(ctx: Context, next) { - let xTrueIp = ctx.header['x-true-ip'] && (typeof ctx.header['x-true-ip'] == 'string'? ctx.header['x-true-ip']: ctx.header['x-true-ip'][0]); - let xRealIp = ctx.header['x-real-ip'] && (typeof ctx.header['x-real-ip'] == 'string'? ctx.header['x-real-ip']: ctx.header['x-real-ip'][0]); - ctx.clientIp = xTrueIp||xRealIp||ctx.request.ip; - console.log('ip ', ctx.uid, ctx.request.url, ctx.clientIp); + + let clientIp = null; + if (ctx.header['x-forwarded-for'] && (typeof ctx.header['x-forwarded-for'] == 'string')) { + clientIp = ctx.header['x-forwarded-for'].split(',')[0]; + console.log('***** xff', clientIp); + } else { + clientIp = ctx.header['x-real-ip'] && (typeof ctx.header['x-real-ip'] == 'string'? ctx.header['x-real-ip']: ctx.header['x-real-ip'][0]); + console.log('***** real', clientIp); + } + ctx.clientIp = clientIp||ctx.request.ip; + console.log('***** clientIp', ctx.clientIp); await next(); }; };