2012-03-29 34 views
30

Xin chào Tôi có một máy chủ có nhiều máy ảo được thiết lập trên đó.Làm thế nào để đặt tên máy chủ bằng cách sử dụng php curl cho một ip cụ thể

Tôi muốn thực hiện yêu cầu curl cho ip của máy chủ này bằng cách sử dụng php. Ngoài ra tôi muốn thực hiện yêu cầu này đến một tên máy chủ cụ thể trên máy chủ của ip.

Có cách nào để làm điều đó không?

Một chút chi tiết hơn: Tôi muốn thực hiện yêu cầu curl giữa các máy chủ của mình bằng LAN nội bộ, sử dụng IP nội bộ của chúng. Vấn đề là tôi có một số trang web được lưu trữ trên máy chủ này. Vì vậy, khi tôi thực hiện một yêu cầu curl đến IP nội bộ của máy chủ .. một cái gì đó như (curl_init (xxx.xxx.xxx.xxx)), tôi muốn có thể nói với apache để đi đến một thư mục cụ thể được trỏ đến bởi một Máy chủ ảo. Tôi hy vọng rằng đưa ra câu hỏi một chút rõ ràng hơn .. - Vishesh Joshi 3 mins ago sửa

+0

Bạn muốn hiển thị ip của bạn khác nhau với curl? – safarov

+0

Nếu đó là tên máy chủ lưu trữ bởi máy chủ web thì bạn có thể sử dụng đơn giản "the_hostname.domain" và nó sẽ hoạt động trừ khi đó là tên máy chủ cục bộ và bạn từ bên ngoài mạng, bạn sẽ phải đặt tên miền đó làm miền mặc định trên đó ip để bạn có thể sử dụng ip thay thế. Nhưng im không rõ ràng nếu đó là những gì bạn đang tìm kiếm tại – Prix

+0

Tôi muốn thực hiện một yêu cầu curl giữa các máy chủ của tôi bằng cách sử dụng mạng LAN nội bộ, sử dụng IP nội bộ của họ. Vấn đề là tôi có một số trang web được lưu trữ trên máy chủ này. Vì vậy, khi tôi thực hiện một yêu cầu curl đến IP nội bộ của máy chủ .. một cái gì đó như (curl_init (xxx.xxx.xxx.xxx)), tôi muốn có thể nói với apache để đi đến một thư mục cụ thể được trỏ đến bởi một máy chủ ảo. Tôi hy vọng rằng làm cho câu hỏi rõ ràng hơn một chút .. –

Trả lời

42

Bạn có thể thiết lập các tiêu đề máy chủ trong yêu cầu 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); 
+0

Cảm ơn Leigh. Tôi chỉ làm điều này và nó hoạt động. Tôi vừa đăng câu trả lời tương tự :) cảm ơn. –

12

Căn cứ vào Leigh Simpson, Nó hoạt động, nhưng tôi cần chuỗi truy vấn đính kèm với nó. Đó là những gì tôi làm việc xung quanh:

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

bạn cần một đường dẫn trong url: chỉ IP máy chủ lưu trữ không đủ. Do đó, bạn nên đặt curl_setopt ($ ch, CURLOPT_URL, "http://xxx.xxx.xxx.xxx/"); – cernio

13

Đối với các trang web HTTPS sử dụng CURLOPT_RESOLVE mà tồn tại trong mỗi phiên bản 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); 

Mẫu đầu ra:

* 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... 
+0

Lưu ý rằng mặc dù tính năng này được thực hiện trong PHP 5.5, nhưng nó vẫn không được ghi lại trong tài liệu PHP. Tuy nhiên, đây là giải pháp đúng và duy nhất để chứng chỉ ssl hoạt động. Hiện tại, tài liệu bổ sung có thể được đọc trong hướng dẫn CURL tại: http://curl.haxx.se/libcurl/c/CURLOPT_RESOLVE.html – Riimu

+0

Bạn thật tuyệt vời! Cảm ơn nhiều! https://stackoverflow.com/questions/47940730/why-curls-fails-to-verify-google-access-token-whereas-browser-succeeds/48167715#48167715 – centurian

Các vấn đề liên quan