如何使用 php curl 为特定 ip 设置主机名

2022-08-30 11:26:40

嗨,我有一个服务器,上面设置了几个虚拟主机。

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

有没有办法做到这一点?

进一步详细说明:我想使用内部LAN,使用内部IP在我的服务器之间发出 curl 请求。问题是我在这个服务器上托管了几个网站。因此,当我向服务器的内部IP发出curl请求时。例如(curl_init(xxx.xxx.xxx.xxx)),我希望能够告诉apache转到虚拟主机指向的特定文件夹。我希望这能使问题更加清晰。– Vishesh Joshi 3分钟前编辑


答案 1

您可以在 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);

答案 2

对于HTTPS站点,使用自PHP 5.5以来存在于每个PHP版本中。CURLOPT_RESOLVE

<?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...

推荐