我已经为网站设置了专用 IP(使用 directadmin),但所有传出的 php 请求都是从服务器的共享 IP 发送的。以下代码的结果始终是共享 IP。
$a = file_get_contents("http://mxtoolbox.com/WhatIsMyIP/");
print $a;
我需要从专用 IP 发送请求,因为我的支付网关只接受来自该 IP 的请求。
我是否需要添加 iptables 规则来从专用 IP 发送所有请求,或者有更好的方法?
答案1
通过专用 IP 设置到支付处理器的路由。该ip route add
命令是您的好朋友。
答案2
这应该在 StackOverflow 上。您需要为您的套接字创建一个上下文。
$opts = array(
'socket' => array(
'bindto' => '10.10.1.1:0',
)
);
$context = stream_context_create($opts);
$a = file_get_contents("http://mxtoolbox.com/WhatIsMyIP/", false, $context);
print $a;
在此示例中,这将绑定到 IP 10.10.1.1。端口 0 用于允许操作系统选择端口。
否则,您必须更改所有流量的默认路由或确定您尝试访问的站点的 IP 地址。如果站点使用分布式网络或更改其地址,后者可能不可靠。