Monday, January 1, 2018

How to set hostname using php curl for a specific ip

Leave a Comment

Hi I have a server which has several virtual hosts set up on it.

I wanted to make a curl request to this server's ip using php. Also I wanted to make this request to a specific hostname on the server's ip.

Is there a way to do it?

A bit more elaboration : I want to make a curl requests between my servers using internal LAN, using their internal IP. The issue is that I have several sites hosted on this server. So when i make a curl request to the internal IP of the server.. something like (curl_init(xxx.xxx.xxx.xxx)), I want to be able to be tell apache to go to a particular folder pointed to by a virtual host. I hope that made the question a bit more clear.. – Vishesh Joshi 3 mins ago edit

3 Answers

Answers 1

You can set the host header in the curl request:

<?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); 

Answers 2

Base on Leigh Simpson, It works, but I need query string attach with it. That's what I work around:

<?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); ?> 

Answers 3

For HTTPS sites use CURLOPT_RESOLVE which first appeared in PHP 5.5.

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

Sample output:

* 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... 
If You Enjoyed This, Take 5 Seconds To Share It

0 comments:

Post a Comment