hyperf获取请求IP方法:
use Hyperf\HttpServer\Contract\RequestInterface;
/**
* @Inject
* @var RequestInterface
*/
protected $request;
/**
* 获取客户端ip地址
* @return mixed
*/
public function ip(){
$res = $this->request->getServerParams();
if(isset($res['http_client_ip'])){
return $res['http_client_ip'];
}elseif(isset($res['http_x_real_ip'])){
return $res['http_x_real_ip'];
}elseif(isset($res['http_x_forwarded_for'])){
//部分CDN会获取多层代理IP,所以转成数组取第一个值
$arr = explode(',',$res['http_x_forwarded_for']);
return $arr[0];
}else{
return $res['remote_addr'];
}
}