使用:
$info1 = $request->getRealIp();
$info2 = $request->getRemoteIp();
獲取的都是阿里云的內(nèi)網(wǎng)IP,怎樣獲取真實的客戶端IP
我在控制器里面?zhèn)魅氲?request->header()獲取的。
demo:
public function get(Request $request)
{
$res = $request->header();
return json(['data'=>$res]);
}
結(jié)果:
{\"remoteip\":\"IP地址\",\"host\":\"域名\",\"x-forwarded-for\":\"IP地址\",\"connection\":\"close\",\"content-length\":\"0\",\"content-type\":\"application\/x-www-form-urlencoded\",\"user-agent\":\"EOLINKER\",\"accept\":\"\/\",\"eo-token\":\"d8ded4e6-2e77-4db5-9490-979916827cf9\",\"slb-ip\":\"IP地址\"}
用 $request->getRealIp();應(yīng)該能獲取真實ip,$request->getRealIp()會自動判斷,如果是內(nèi)網(wǎng)ip,嘗試獲取x-forwarded-for的值作為ip。
嘗試了一下,在測試服務(wù)器上$request->getRealIp()確實可以,但是正式環(huán)境用的阿里云的負載均衡就不行了,需要用$request->header()獲取
用 $request->getRealIp(false); (有個false參數(shù))獲取。
或者 $request->header('x-forwarded-for');
下個版本1.3.10(還沒發(fā)布)可以直接用 $request->getRealIp(); 獲取。