返回列表 发帖
查看: 682|回复: 3

关于x3.5版本获取真实IP

1

主题

3

回帖

9

积分

初学乍练

贡献
0 点
金币
5 个
发表于 2023-8-9 14:14:08 | 显示全部楼层 |阅读模式
升级了论坛3.5版本,发现IP出现问题了;弄了两天,才弄好;

论坛自身是apache + php 5.6 的配置;
前面还有nginx代理;
正确配置如下;
1. 放开安全限制,ip接收其他参数头;
config/config_global.php

  1. $_config['security']['onlyremoteaddr'] = 0; //默认为1,表示只接受remote addr参数头;
复制代码
2. 修改ip相关配置参数;
  1. $_config['ipgetter']['setting'] = 'header';
  2. $_config['ipgetter']['header']['header'] = 'HTTP_X_REAL_IP';
复制代码


3. nginx配置
  1.   location / {
  2.                         client_max_body_size 1000m;
  3.                         proxy_pass      http://10.1.9.5:8080;
  4.                         proxy_set_header Host $host:$server_port; //论坛非标准端口,代理时需要添加这个东东;
  5.                                                 proxy_set_header X-REAL-IP $remote_addr;
  6.                                                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  7.                 }
复制代码
4. 测试文件

  1. <?php
  2. class ip_getter_header {
  3.     public static function get($s) {
  4.         if (empty($s['header'])) {
  5.             return $_SERVER['REMOTE_ADDR'];
  6.         }
  7.         $ip = isset($_SERVER[$s['header']]) ? $_SERVER[$s['header']] : $_SERVER['REMOTE_ADDR'];

  8.         return $ip;
  9.     }
  10. }

  11. foreach ($_SERVER as $key => $value) {
  12.     echo "$key: $value<br>";
  13. }

  14. $customHeader = 'aaaaa';
  15. $ip = ip_getter_header::get(['header' => $customHeader]);
  16. echo "<Br><Br>Client IP Address: " . $ip;

  17. $customHeader2 = 'HTTP_AAAAA';
  18. $ip2 = ip_getter_header::get(['header' => $customHeader2]);
  19. echo "<Br>Client IP Address2: " . $ip2;
  20. ?>
复制代码



回复

使用道具 举报

12

主题

1607

回帖

2716

积分

Giter

贡献
143 点
金币
353 个
发表于 2023-8-10 05:31:31 | 显示全部楼层
你既然会改Nginx了,何不直接在Apache上接收Nginx传过来的ip呢?那样效果更好,也不用配置Discuz了,还能保证服务器log里的ip也没有错。
另外如果要改Discuz,需要同时修改Discuz本体和UCenter(如果你用的不是独立模式),方法详见https://www.dismall.com/thread-14866-1-1.html
回复 支持 反对

使用道具 举报

12

主题

1607

回帖

2716

积分

Giter

贡献
143 点
金币
353 个
发表于 2023-8-10 05:32:40 | 显示全部楼层
上一条回复里的链接给错了,是这个:https://www.dismall.com/thread-15034-1-1.html
回复 支持 反对

使用道具 举报

1

主题

3

回帖

9

积分

初学乍练

贡献
0 点
金币
5 个
 楼主| 发表于 2023-8-10 14:00:45 | 显示全部楼层
大神啊,我才搜索到你的帖子啊,NB!!!
之前搜索到的是1314那个人发的。 测试发现不对,因为我不会编程,没了解过php,不知道变量会被替换。
再次请教一下apache如何接受nginx的传参,是直接赋值吗?还是咋地。通常做法都是把ip新头一直传下去,这个我知道。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 23:47 , Processed in 0.045367 second(s), 5 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

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