我最近将Laravel应用程序从服务器移到了Vapor。此应用程序依赖于使用Request::ip()
记录请求IP地址,但是由于切换到Vapor,所有IP都记录为127.0.0.1。
我已经查看了https://laravel.com/docs/5.6/requests#configuring-trusted-proxies处的Trusted Proxy文档,但是我们没有设置负载均衡器,因此该解决方案似乎不相关。我怀疑该IP地址来自Amazon API Gateway。
我们如何在Vapor上部署的应用程序中获得传入请求的actual客户端IP?
下面是我们如何使用IP地址的最小示例:
public function store(Request $request)
{
$workerIP = $request->ip();
$worker = Worker::create(['ip_address' => $workerIP]);
return view('workers.show')->withWorker($worker);
}
“我们没有设置负载均衡器”是的,您知道。从根本上说,API网关是完全与可信代理配置所针对的代理。
在'proxies' => '*'
文件中设置config/trustedproxy.php
,您应该开始看到正确的IP地址。