有没有一种方法可以强制curl使用特定的IP,而不是使用DNS查找


Is there a way to force curl to use a specific IP rather than using a DNS lookup?

我想做的是向example.com发送一个curl请求,但我不想使用DNS查找,而是想专门发送请求,比如1.1.1.1

我之所以想这样做,是因为我想确定请求将发送到我们的哪台服务器,而不会被负载均衡器打乱。

我想知道是否有这样的东西:

$ch = curl_init();
curl_setopt( CURLOPT_URL, 'example.com' );
curl_setopt( CURLOPT_ENDPOINT_IP, '1.1.1.1' ); // <= is there something like this?

我很确定curl本身没有这样的机制,但我如何才能达到这种效果

IP上的服务器本身正在运行vhosts,因此HTTP请求包括一个命名主机而不是IP是很重要的,这就是为什么我需要在请求中放入一个命名的主机,但通过IP地址连接到它。

curl_setopt( $ch, CURLOPT_URL, 'http://1.1.1.1/' );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Host: example.com') );

HTTP协议知识的力量;)