检索 IP 地址

检索客户端当前 IP 地址的最佳方式,是利用使用了类似 rka-ip-address-middleware 这种组件的中间件。

这个组件可以通过 composer 来安装:

composer require akrabat/rka-ip-address-middleware

要使用这个组件,需要使用 App 注册中间件,这里提供了一个可信赖的代理列表(e.g. varnish 服务器), 如果你再使用它们:

$checkProxyHeaders = true;
$trustedProxies = ['10.0.0.1', '10.0.0.2'];
$app->add(new RKA\Middleware\IpAddress($checkProxyHeaders, $trustedProxies));

$app->get('/', function ($request, $response, $args) {
    $ipAddress = $request->getAttribute('ip_address');

    return $response;
});

这个中间件把客户端 IP 地址存储在一个 HTTP 请求属性中,所以需要通过 $request->getAttribute('ip_address') 来访问。