admin 发表于 2023-1-10 09:48:26

Discuz!X3.5使用百度云CDN Nginx负载后端源抓取用户真实IP网站用户真实IP精确地址设置教程

Discuz!X3.5使用百度云CDN Nginx负载后端源抓取用户真实IP网站用户真实IP精确地址设置教程:

如果你参考以下官方教程方法后,并没有实现想要获得的精确用户IP地址:
Discuz!X3.5使用CDN时,获取用户真实IP
https://www.dz-x.net/t/38510/1/1.html
(出处: DZ插件网)

Discuz! X3.5 针对常见CDN/WAF/负载均衡,如何获取真实IP?
https://www.dz-x.net/t/40106/1/1.html
(出处: DZ插件网)

那么可以参考以下解决办法:
描述:因业务原因使用百度CDN ,出现后端源无法抓取用户真实IP,过滤Postman 伪造虚拟IP,默认情况下无法过滤;用户访问流程:Client---->百度CDN---->Nginx(Tengine)需求:用户直接访问Nginx ,与用户过百度CDN,都要抓取到用户真实IP;具体配置如下:1. 百度云CDN配置抓取用户IP ,选择类型使用:Real IP
2.安装Nginx(Tengine),这里使用是Tengine2.3.2 版本,支持http_realip_module 模块 ;
3. 配置Nginx 日志格式; 宝塔 —— 软件商店 —— 全部 —— 选择你目前正在使用的nginx —— 设置 —— 配置修改:如图位置,查找:default_typeapplication/octet-stream;在其下行添加:(大概31行)log_format main'$http_x_forwarded_for|$http_x_real_ip|$remote_addr - $remote_user [$time_local] "$request"
                                        $status $body_bytes_sent "$http_referer"
                                        "$http_user_agent" "$http_x_forwarded_for" "$http_x_real_ip"';如图:**** Hidden Message *****
另外一处修改添加位置:查找:access_log/www/wwwlogs/access.log;在其下行,添加:(大概102行位置)set_real_ip_from 0.0.0.0/0;
                real_ip_header   X-Real-IP;
                real_ip_recursive on;如图:**** Hidden Message *****
然后重启nginx服务,使之生效:

5. 配置 proxy_set_header 转发至后端,此处测试使用 proxy_set_header X-Real-IP $http_x_real_ip,proxy_set_header X-Real-IP $remote_addr ;都有测试,单独或者组合并不能过滤postman 假请求ip ,还会携带CDN 节点ip ;

最后一步:打开你论坛 config/config_global.php
找到:
$_config['security']['onlyremoteaddr'] = 1;改为:$_config['security']['onlyremoteaddr'] = 0;
找到:
$_config['ipgetter']['setting'] = '';
改为:$_config['ipgetter']['setting'] = 'header';
并确认:(下行保持默认不用改即可!)**** Hidden Message *****
然后再去检查下论坛用户的个人信息的IP地址上次访问地址是否正常了。

bit 发表于 2023-1-10 15:07:53

有用!回复学习!感谢~

Guoyuh78 发表于 2023-1-10 21:04:58

楼主发贴辛苦了,谢谢楼主分享!
这东西我收了!谢谢楼主!dz插件网真好!
页: [1]
查看完整版本: Discuz!X3.5使用百度云CDN Nginx负载后端源抓取用户真实IP网站用户真实IP精确地址设置教程

创宇盾启航版免费网站防御网站加速服务