From 7bebb831402cddf01b6b70b61a6a45a766c28d77 Mon Sep 17 00:00:00 2001 From: liangtongchuan Date: Fri, 12 May 2023 22:39:06 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(web-server):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9IP=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F=E4=B8=BAxff?= =?UTF-8?q?=E4=BC=98=E5=85=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-server/app/middleware/getIp.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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(); }; };