php是否能够实现将http请求转发到一个域名的指定IP下?
比如www.a.com这个域名有多台服务器,IP有4个,正常情况是随机的,如果我想在PHP层把访问的IP写死,有可能实现吗?
php是否能够实现将http请求转发到一个域名的指定IP下?
比如www.a.com这个域名有多台服务器,IP有4个,正常情况是随机的,如果我想在PHP层把访问的IP写死,有可能实现吗?
Nginx
upstream www_a_com {
# IP1 Server
server 192.168.1.11:80 weight=1;
}
server{
listen 80;
server_name www.a.com;
proxy_pass http://www_a_com;
# ....
}
<?php
/************************
* 函数用途:同一域名对应多个IP时,获取指定服务器的远程网页内容
* 创建时间:2008-12-09
* 创建人:张宴(blog.s135.com)
* 参数说明:
* $ip 服务器的IP地址
* $host 服务器的host名称
* $url 服务器的URL地址(不含域名)
* 返回值:
* 获取到的远程网页内容
* false 访问远程网页失败
************************/
function HttpVisit($ip, $host, $url)
{
$errstr = '';
$errno = '';
$fp = fsockopen ($ip, 80, $errno, $errstr, 90);
if (!$fp)
{
return false;
}
else
{
$out = "GET {$url} HTTP/1.1\r\n";
$out .= "Host:{$host}\r\n";
$out .= "Connection: close\r\n\r\n";
fputs ($fp, $out);
while($line = fread($fp, 4096)){
$response .= $line;
}
fclose( $fp );
//去掉Header头信息
$pos = strpos($response, "\r\n\r\n");
$response = substr($response, $pos + 4);
return $response;
}
}
//调用方法:
$server_info1 = HttpVisit("72.249.146.213", "blog.s135.com", "/abc.php");
$server_info2 = HttpVisit("72.249.146.214", "blog.s135.com", "/abc.php");
$server_info3 = HttpVisit("72.249.146.215", "blog.s135.com", "/abc.php");
?>
15 回答8.4k 阅读
3 回答2.3k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
可以的,CURLOPT_URL中的域名写成ip,然后在CURLOPT_HTTPHEADER中指定域名.
比如实际api地址为:http://www.a.com/api/user,需要解析到的ip为:192.168.0.11。就按下面这样写: