PHP cURL使用IP地址而不是域名连接

时间:2015-03-23 11:02:34

标签: php curl

我在同一数据中心运行了几台启用了内部网络的服务器。为了速度和成本(内部流量不计费),我希望能够在内部IP上的各种服务器之间进行切换。

我刚刚发现,如果我按照

的方式尝试
curl_init('10.x.x.x);

甚至

curl_init():
curl_setopt(CURLOPT_URL,'https://10.x.x.x/scripttorun.php');

不起作用。当我只发送非常少量的数据时,我可以将其作为查询字符串附加并执行file_get_contents。但是,当数据量太大而无法作为GET请求发送时,如果我不能使用cURL,事情会变得更加混乱。

搜索点表明我可以通过编辑/ etc / hosts表来说服cURL使用IP。问题是内部网络上的各种服务器可能以不可预测的间隔上下线,因此我最终必须定期轮询以查看哪些服务器在线,编写脚本以更新/ etc / hosts ...非常凌乱。

也许有一个简单的解决方案可以说服cURL使用IP。毕竟,file_get / put_contents没有退缩。对于那些可能能够解决cURL

的人来说,我最有责任

1 个答案:

答案 0 :(得分:2)

如果您必须连接到服务器并询问特定的服务器名称,则可以使用curl setopt参数进行连接。如果你想从特定的IP(不添加任何/ etc / hosts映射)从www.mytopsite.com获取文件/index.php,你可以这样做:

$headers = array("Host: www.myfaketopsite.com");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, "http://10.1.2.3/index.php");