我不太懂 ngxin 的配置,半斤八两,网上搜了一些资料,似乎还是有些迷糊
我的环境是这样的:
我用的 Python, 然后外面套了一个 nginx, 然后接入了阿里云的 cdn
流量是先到 阿里云 cdn, 再到我的 nginx, 最后到我的 Python web 服务
用了阿里云的 cdn 后, 无法简单快速的 到真实的 ip,
搜索后发现 在 nginx 里添加 一段配置代码,似乎勉强可以
proxy_set_header Host $host;
proxy_set_header Ali-CDN-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
但是我加了这个代码后, 在客户端的 headers 里,ali-cdn-real-ip 获取的并不是客户端的真实 ip,而是阿里云 cdn 的 ip (每次刷新会变)
只有 headers 里的 x-forwarded-for 获取的第一个 ip 是客户端真实 ip (没有重新拨号的情况下,刷新也不会改变)
我想问问,阿里云为什么要搞一个 Ali-CDN-Real-IP, 为什么无法用 x-real-ip 获取到真实 ip 呢
阿里云是自己搞了一套标准吗? 它为什么不遵守行业标准, 让 x-real-ip 获取的就是客户端的真实 ip 呢?
我该怎么让 获取真实 ip 这个流程更具有鲁棒性呢?(比如我下次可能换腾讯云的 cdn,或者其他 cdn,是否有一个标准,可以让我更换 cdn 厂家后,我不用改配置文件,也可以获取到 真实的客户端 ip )
谢谢
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.