返回列表 发帖
查看: 2153|回复: 8

[已解决] CDN获取不了真实IP

30

主题

79

回帖

119

积分

渐入佳境

贡献
0 点
金币
5 个
QQ
发表于 2021-12-7 20:30:49 | 显示全部楼层 |阅读模式
我使用的是又拍云,他上面有文档,但是我不知道DZ是怎么修改,麻烦哪位大佬请教一下,线把代码公布出来
如何获取最终用户 IP ?
又拍云 CDN 回客户源的时候会带上 X-Real-IP 和 X-Forwarded-For 的请求头下去,值为用户实际访问 CDN 的来源 IP 地址。特别地,为了兼容部分服务端程序,我们额外还提供了 Client-IP 请求头的支持,其值和 X-Real-IP、X-Forwarded-For 相同。
示例一:PHP 代码¶
<?php        $ip = $_SERVER["HTTP_X_REAL_IP"];        echo $ip; ?>
示例二: Nginx 配置¶
server    {        listen 80;        add_header X-Real-IP $http_x_real_ip;     }
1 贡献

最佳答案

修改文件 source\class\discuz\discuz_application.php
搜索
private function _get_client_ip() {
找到
$ip = $_SERVER['REMOTE_ADDR'];
在下面加上
  1. if(isset($_SERVER['HTTP_X_REAL_IP'])) $ip=$_SERVER['HTTP_X_REAL_IP'];
复制代码


杰哥好
回复

使用道具 举报

30

主题

79

回帖

119

积分

渐入佳境

贡献
0 点
金币
5 个
QQ
 楼主| 发表于 2021-12-7 20:40:52 | 显示全部楼层
又拍云 CDN 回客户源的时候会带上 X-Real-IP 和 X-Forwarded-For 的请求头下去,值为用户实际访问 CDN 的来源 IP 地址。特别地,为了兼容部分服务端程序,我们额外还提供了 Client-IP 请求头的支持,其值和 X-Real-IP、X-Forwarded-For 相同。

如何使用

1、X-Real-IP 传递用户 IP

使用该方式传递最终用户 IP ,需要服务端代码进行一些改造,网站需要根据使用编程语言的不同,修改相应的代码模块,才可以传递最终用户 IP。代码示例如下:

示例一:PHP 代码¶

<?php
        $ip = $_SERVER["HTTP_X_REAL_IP"];
        echo $ip;
?>
示例二: Nginx 配置¶

server
    {
        listen 80;
        add_header X-Real-IP $http_x_real_ip;
    }
2、X-Forward-For 传递用户 IP

回源请求头会默认传递 X-Forwarded-For 的值,用户网站无需任何改造。

注意事项

1、新增加速服务时我们会默认使用 X-Real-IP 和 X-Forwarded-For 方式,网站只需要按照 “如何使用” 章节中,对原先的用户 IP 获取代码进行替换即可;

2、由于 X-Real-IP 是又拍云 CDN 服务特有的回源请求头 ,故终止 CDN 后,网站需将获取用户 IP 的代码修改为原始代码;

3、在选择使用 X-Forwarded-For 进行最终用户 IP 传递时 ,X-Real-IP、Client-IP也是同时传递的;
杰哥好
回复 支持 反对

使用道具 举报

19

主题

268

回帖

780

积分

应用开发者

贡献
18 点
金币
315 个
发表于 2021-12-10 16:03:23 | 显示全部楼层
修改文件 source\class\discuz\discuz_application.php
搜索
private function _get_client_ip() {
找到
$ip = $_SERVER['REMOTE_ADDR'];
在下面加上
  1. if(isset($_SERVER['HTTP_X_REAL_IP'])) $ip=$_SERVER['HTTP_X_REAL_IP'];
复制代码


回复 支持 反对

使用道具 举报

19

主题

268

回帖

780

积分

应用开发者

贡献
18 点
金币
315 个
发表于 2021-12-10 16:03:51 | 显示全部楼层
修改前记得备份原文件!
回复 支持 反对

使用道具 举报

30

主题

79

回帖

119

积分

渐入佳境

贡献
0 点
金币
5 个
QQ
 楼主| 发表于 2021-12-11 12:00:31 | 显示全部楼层
人工智能实验室 发表于 2021-12-10 16:03
修改文件 source\class\discuz\discuz_application.php
搜索
private function _get_client_ip() {

谢谢,马上尝试
杰哥好
回复 支持 反对

使用道具 举报

75

主题

301

回帖

393

积分

炉火纯青

贡献
0 点
金币
0 个
QQ
发表于 2021-12-11 16:09:22 | 显示全部楼层
搞这些不如搞百度加速。每天免费5G流量。。。舒服的很。。
大渝传奇论坛(官方传奇)https://www.cqtieba.com
回复 支持 反对

使用道具 举报

30

主题

79

回帖

119

积分

渐入佳境

贡献
0 点
金币
5 个
QQ
 楼主| 发表于 2021-12-11 19:25:44 来自手机 | 显示全部楼层
fujie1982 发表于 2021-12-11 16:09
搞这些不如搞百度加速。每天免费5G流量。。。舒服的很。。

但是又拍云免费每月15g
回复 支持 反对

使用道具 举报

75

主题

301

回帖

393

积分

炉火纯青

贡献
0 点
金币
0 个
QQ
发表于 2021-12-11 21:22:10 | 显示全部楼层
3050075638 发表于 2021-12-11 19:25
但是又拍云免费每月15g

我说的是每天。。。。一个月30天。。
大渝传奇论坛(官方传奇)https://www.cqtieba.com
回复 支持 反对

使用道具 举报

30

主题

79

回帖

119

积分

渐入佳境

贡献
0 点
金币
5 个
QQ
 楼主| 发表于 2021-12-12 12:56:04 | 显示全部楼层
人工智能实验室 发表于 2021-12-10 16:03
修改文件 source\class\discuz\discuz_application.php
搜索
private function _get_client_ip() {

你的方法真不错解决了
杰哥好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-4-25 09:03 , Processed in 0.041090 second(s), 7 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表