node.js - 在 GAE 中的反向代理后面记录正确的用户 ip
问题描述
我在 AppEngine 前面使用 cloudflare 作为反向代理。因此,在 GCP Logging 请求日志中,记录的 IP 是 Cloudflare 的。
在 cloudflare 后面,实际用户 IP 是req.headers['x-forwarded-for'].split(',')[0]
,所以我一直在尝试通过Google Logging日志相关性来解决问题(在快速中间件中):
const forwardedForHeader = req.headers['x-forwarded-for']
const userIp = forwardedForHeader ? forwardedForHeader.split(',')[0] : req.ip
res.on('finish', () => {
logger.info(req.originalUrl, {
httpRequest: {
status: res.statusCode,
requestUrl: req.originalUrl,
requestMethod: req.method,
remoteIp: userIp,
},
remoteIp: userIp, // workaround to get remote IP as metadata - GAE has everything else
})
})
LOGGING_SPAN_KEY
&LOGGING_TRACE_KEY
都设置正确。
不幸的是,我仍然收到 2 个日志条目(GAE 在请求日志中生成了 1 个;我的生成如上)。
有没有办法在请求日志中获取实际的用户 ip?
解决方案
推荐阅读
- r - 通过使用 navbarPanel() 并隐藏导航栏来构建多页闪亮的应用程序用户端(在 ui.R 中)?
- protractor - 如何使用量角器选择下拉菜单?
- r - 尝试在 R 中调整 Apriori 算法的外观
- c# - 如何每 2 小时(定期)将文件从 Azure 文件存储复制到本地计算机?
- python - Python读取c typedef struct
- xaml - 如何创建要在 Xamarin.Forms XML 中使用的常量
- python - 在 Python 中修改 for 循环的输出
- java - 任何单词、方括号、asc OR desc 或任何其他由逗号、方括号分隔的字符串的正则表达式
- c# - 如何将 IIS W3C 日志文件转换为 CSV?
- python - Python中列表理解的困难