这是去年遇到的问题了,虽然当时很快解决了,但一直没时间水一篇文章,就这么拖到了现在。今天终于抽空,把这个小坑记录一下。
遇到的问题
部署 Twikoo 评论系统后,加了 CDN(多吉云),想着加速一下访问速度,结果评论里的用户 IP 地址不对了,显示的是 CDN 节点的 IP。
排查后发现,问题出在CDN 转发时,后端拿到的是节点 IP,而不是访客真实 IP。
解决方法
当时我在Github上提了一个 issue ,很快得到了作者 imaegoo 大佬的回复指导,解决过程也很简单,总结下来:
🔹 CDN 通常会把访客真实 IP 加到一个请求头里,比如 X-Forwarded-For。
🔹 只需要告诉 Twikoo 从正确的请求头里取 IP 就行了。
比如:
-
腾讯云 EdgeOne 的访客 IP 放在
EO-Client-IP,配置:环境变量TWIKOO_IP_HEADERS=["headers.eo-client-ip"] -
而我用的是 多吉云,默认是
X-Forwarded-For,所以配置成:环境变量TWIKOO_IP_HEADERS=["headers.x-forwarded-for"]
⚠️ 注意:格式是 "headers.x-forwarded-for",不是 "X-Forwarded-For"!
添加环境变量
如果你的 Twikoo 是通过 1Panel 部署的,可以按下面步骤添加环境变量,其他的大概也类似:
-
打开 1Panel 面板,进入 容器。
-
找到你的 twikoo 容器,点击编辑。
-
滑到页面最下方,找到 环境变量 部分。
-
添加一条新的环境变量:
环境变量TWIKOO_IP_HEADERS=["headers.x-forwarded-for"]
-
键(Key):
TWIKOO_IP_HEADERS -
值(Value):
["headers.x-forwarded-for"]
- 保存并重启容器,配置就生效了!
总结
- 配了 CDN 后,不用担心评论 IP 问题,只要设置好 IP 透传头就行了。
- 不同的 CDN 提供的请求头可能不同,记得对照文档确认一下。
- 小坑一枚,迟来的水文一篇,希望能帮到有缘人!
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 Elykia
评论
隐私政策
0/500
滚动到此处加载评论...


