请选择 进入手机版 | 继续访问电脑版
查看: 1074|回复: 8

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

[复制链接]

29

主题

94

帖子

103

积分

Member

Rank: 2Rank: 2

贡献
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;     }
5 金币

最佳答案

修改文件 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'];
复制代码


杰哥好
回复

使用道具 举报

29

主题

94

帖子

103

积分

Member

Rank: 2Rank: 2

贡献
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也是同时传递的;
杰哥好
回复 支持 反对

使用道具 举报

18

主题

251

帖子

623

积分

开发者

Rank: 6Rank: 6Rank: 6

贡献
2 点
金币
293 个
发表于 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'];
复制代码


回复 支持 反对

使用道具 举报

18

主题

251

帖子

623

积分

开发者

Rank: 6Rank: 6Rank: 6

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

使用道具 举报

29

主题

94

帖子

103

积分

Member

Rank: 2Rank: 2

贡献
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() {

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

使用道具 举报

57

主题

303

帖子

338

积分

Conqueror

Rank: 3Rank: 3Rank: 3

贡献
0 点
金币
22 个
发表于 2021-12-11 16:09:22 | 显示全部楼层
搞这些不如搞百度加速。每天免费5G流量。。。舒服的很。。
回复 支持 反对

使用道具 举报

29

主题

94

帖子

103

积分

Member

Rank: 2Rank: 2

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

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

使用道具 举报

57

主题

303

帖子

338

积分

Conqueror

Rank: 3Rank: 3Rank: 3

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

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

使用道具 举报

29

主题

94

帖子

103

积分

Member

Rank: 2Rank: 2

贡献
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
添加有偿服务微信