You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WHM/Cpanel(CentOS)同机两独立IP脚本交互源IP传递错误如何解决

同服务器跨专属IP请求源IP重写问题解决方案

问题根因

这是WHM/Cpanel环境下多专属IP站点的默认路由特性导致的问题:当同服务器上绑定专属IP的站点请求另一个绑定专属IP的站点时,流量默认走本地回环链路,不会经过公网路由,内核会自动将请求源IP重写为目标站点的专属IP,和脚本逻辑无关。

可落地解决方案

方案1:排除目标域名本地代理(最小影响,WHM可视化操作)

不需要修改系统配置文件,直接在WHM后台配置即可:

  • 登录WHM管理后台,依次进入服务配置 → Apache配置 → 调整Apache配置
  • 找到Exclude these domains from local proxy输入框,填入ScriptB的域名
  • 保存配置后等待WHM自动重建Apache配置并重启服务生效,该配置仅让ScriptB的域名不触发本地代理逻辑,不影响其他站点。

方案2:关闭全局本地代理路由(全局生效,适合多站点跨IP调用场景)

如果有大量同服务器跨专属IP的请求需求,可以直接关闭全局本地代理规则:

  • 登录WHM管理后台,依次进入服务配置 → Apache配置 → 调整Apache配置
  • 找到Local Domain Routing分类,关闭Proxy local domains to local IPs选项
  • 保存配置后等待服务重启生效即可。

方案3:配置iptables SNAT规则(永久生效,规则可控)

如果需要精准控制流量规则,可添加SNAT规则手动指定源IP,假设ScriptA专属IP为1.1.1.1,ScriptB专属IP为2.2.2.2:

  • 执行命令添加规则:
    iptables -t nat -A POSTROUTING -d 2.2.2.2 -s 127.0.0.0/8 -j SNAT --to-source 1.1.1.1
  • 保存规则避免服务器重启后失效:
    service iptables save

方案4:兼容校验逻辑(无服务器配置修改成本)

如果不方便修改服务器配置,可以调整ScriptB的校验逻辑:当请求源IP为服务器自身的IP段时,优先读取请求头中的X-Forwarded-For或X-Real-IP字段获取真实源IP,再和签名域名做匹配即可。

验证方法

修改完成后在ScriptA所属的SSH环境执行测试请求:
curl -v [ScriptB的测试接口地址]
同时在ScriptB侧打印请求的远端IP字段(Python中为request.remote_addr),确认返回值为ScriptA的专属IP即配置生效。

内容的提问来源于stack exchange,提问作者cryptoman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:06:05