【问题标题】:How to set hostname using php curl for a specific ip如何使用 php curl 为特定 IP 设置主机名
【发布时间】:2012-03-29 20:03:09
【问题描述】:

您好,我有一台服务器,上面设置了多个虚拟主机。

我想使用 php 向该服务器的 ip 发出 curl 请求。 此外,我想向服务器 ip 上的特定主机名发出此请求。

有办法吗?

再详细一点: 我想使用内部 LAN 在我的服务器之间使用它们的内部 IP 发出 curl 请求。问题是我在此服务器上托管了多个站点。因此,当我向服务器的内部 IP 发出 curl 请求时.. 类似于 (curl_init(xxx.xxx.xxx.xxx)),我希望能够告诉 apache 转到由 a 指向的特定文件夹虚拟主机。我希望这能让问题更清楚一点.. – Vishesh Joshi 3 分钟前编辑

【问题讨论】:

  • 你想用 curl 显示你的 ip 不同吗?
  • 如果它是由网络服务器托管的主机名,那么您可以简单地使用“the_hostname.domain”,它应该可以工作,除非它是本地主机名并且您来自网络外部,那么您必须该域是该 ip 上的默认域,因此您可以改用该 ip。但我不太清楚你在看什么
  • 我想使用内部 LAN 在我的服务器之间使用它们的内部 IP 发出 curl 请求。问题是我在此服务器上托管了多个站点。因此,当我向服务器的内部 IP 发出 curl 请求时.. 类似于 (curl_init(xxx.xxx.xxx.xxx)),我希望能够告诉 apache 转到由 a 指向的特定文件夹虚拟主机。我希望这让问题更清楚..

标签: php curl


【解决方案1】:

对于 HTTPS 站点,请使用 CURLOPT_RESOLVE,它存在于每个 PHP 版本中 since PHP 5.5

<?php
$ch = curl_init('https://www.example.com/');
// note: array used here
curl_setopt($ch, CURLOPT_RESOLVE, array(
    "www.example.com:443:172.16.1.1",
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);

样本输出:

* Added www.example.com:443:172.16.1.1 to DNS cache
* Hostname www.example.com was found in DNS cache
*   Trying 172.16.1.1...

【讨论】:

【解决方案2】:

可以在 curl 请求中设置主机头:

<?php
$ch = curl_init('XXX.XXX.XXX.XXX');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: subdomain.hostname.com'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);

【讨论】:

  • 谢谢利。我只是这样做了,它奏效了。我只是要发布相同的答案:) 谢谢。
  • 这对我不起作用,因为提供的 SSL 证书不匹配。下面的 CURLOPT_RESOLVE 有效 - 但对于 Let's Encrypt 之类的东西,如果它不在 DNS 中,更新它可能是个问题。
【解决方案3】:

基于 Leigh Simpson, 它可以工作,但我需要附加查询字符串。 这就是我的工作:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://xxx.xxx.xxx.xxx/index.php?page=api&action=getdifficulty");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: subdomain.hostname.com'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);
?>

【讨论】:

  • 你需要一个url中的路径:仅主机IP是不够的。因此,您应该设置 curl_setopt($ch, CURLOPT_URL, "xxx.xxx.xxx.xxx/");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 2019-12-07
  • 1970-01-01
  • 2018-05-20
  • 2022-06-15
相关资源
最近更新 更多