CloudFlare 用户:如何使用 HTTP 头中的 CF-* 字段替代普通 IP?

由于 CloudFlare 会混淆访客的 IP 地址,因此能够捕获其插入的 HTTP 标头中的其他 CloudFlare 特定字段(例如 CF-Connecting-IPX-Forwarded-ForCF-IPCountry)并随后在 管理 > 用户 > 用户名 页面中条件性地报告这些字段,将非常有用,从而补充那些在使用 CloudFlare 时作用不大的 IP 字段及 IP 查询按钮。

当 CF-* 标头字段可用时,能否在此页面中提供这些字段?

一个有用的选项(我在其他 Rails 应用中曾使用过)是:如果这些字段可用,则直接用它们替代 IP 地址。自从我上次实现该功能已有一段时间,但据我回忆,我们只需将访客的 IP 设置为普通 IP,除非存在 CF-Connecting-IP……不过,我记得对 X-Forwarded-For 还做过其他处理……

如果您使用提供的 Cloudflare 模板,所有操作都会自动处理。这实际上在 Discourse 中已经存在四到五年了。

假设您按照标准安装步骤操作:

cd /var/discourse
nano containers/app.yml

然后在 templates 部分下添加这一行:

- "templates/cloudflare.template.yml"

接着重新构建即可:

./launcher rebuild app

此时,您的安装将显示真实的用户地址。

太棒了,Stephen,谢谢!这么简单的东西,本应该默认包含在内并注释掉,或者在某个地方进行文档说明。至少现在通过搜索“CloudFlare”在这里就能找到相关内容了。我甚至从未想过要去 templates 文件夹里找找看!:slight_smile: