Как я могу получить IP-адрес HTTP-запроса в приложении Laravel Vapor? - PullRequest
0 голосов
/ 11 октября 2019

Я недавно переместил приложение Laravel с сервера на Vapor. Это приложение полагается на протоколирование IP-адресов запросов с использованием Request::ip(), но с момента переключения на Vapor все IP-адреса регистрируются как 127.0.0.1.

Я просмотрел документы Trusted Proxy на https://laravel.com/docs/5.6/requests#configuring-trusted-proxies, ноу нас не настроен балансировщик нагрузки, поэтому это решение не выглядит актуальным. Я подозреваю, что этот IP-адрес исходит от Amazon API Gateway.

Как получить фактический клиентский IP-адрес входящих запросов в приложении, развернутом на Vapor?

Ниже приведен минимальный пример использования IP-адреса:

public function store(Request $request)
    {
        $workerIP = $request->ip();
        $worker = Worker::create(['ip_address' => $workerIP]);
        return view('workers.show')->withWorker($worker);

    }

Ответы [ 2 ]

3 голосов
/ 11 октября 2019

"у нас нет настроенного балансировщика нагрузки" Да, вы делаете. Шлюз API, по сути, является прокси именно того типа, для которого предназначена конфигурация доверенного прокси.

Установите 'proxies' => '*' в файле config/trustedproxy.php, и вы должны начать видеть правильные IP-адреса.

0 голосов
/ 04 ноября 2019

В последнем пакете ядра Vapor (пара-ядро: v2.2.1) есть заголовок x-vapor-source-ip, который предоставляет свойство sourceIp Lambda для безопасного получения реального IP-адреса клиента.

Вы можете получитьip:

Request::header('x-vapor-source-ip')
...