CDN获取不了真实IP
我使用的是又拍云,他上面有文档,但是我不知道DZ是怎么修改,麻烦哪位大佬请教一下,线把代码公布出来如何获取最终用户 IP ?¶又拍云 CDN 回客户源的时候会带上 X-Real-IP 和 X-Forwarded-For 的请求头下去,值为用户实际访问 CDN 的来源 IP 地址。特别地,为了兼容部分服务端程序,我们额外还提供了 Client-IP 请求头的支持,其值和 X-Real-IP、X-Forwarded-For 相同。
示例一:PHP 代码¶
示例二: 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'];
在下面加上
if(isset($_SERVER['HTTP_X_REAL_IP'])) $ip=$_SERVER['HTTP_X_REAL_IP'];
人工智能实验室发表于2021-12-10 16:03:23
[*]详细答案 >
又拍云 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也是同时传递的;
修改文件 source\class\discuz\discuz_application.php
搜索
private function _get_client_ip() {
找到
$ip = $_SERVER['REMOTE_ADDR'];
在下面加上
if(isset($_SERVER['HTTP_X_REAL_IP'])) $ip=$_SERVER['HTTP_X_REAL_IP']; 修改前记得备份原文件! 谢谢,马上尝试 搞这些不如搞百度加速。每天免费5G流量。。。舒服的很。。 fujie1982 发表于 2021-12-11 16:09
搞这些不如搞百度加速。每天免费5G流量。。。舒服的很。。
但是又拍云免费每月15g 我说的是每天。。。。一个月30天。。 你的方法真不错解决了 厉害啊,修改一下就好了
页:
[1]