Я пытаюсь получить IP-адрес посетителя в своем приложении Laravel, которое использует Nginx в Google Cloud Kubernetes Engine под балансировщиком нагрузки.
Я настроил TrustProxies.php следующим образом:
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array
*/
protected $proxies = '*';
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;
}
я тоже пробовал
protected $proxies = '**';
А также
protected $proxies = ['loadbalancer_ip_here'];
Независимо от того, что я пробовал, он всегда будет возвращать ip балансировщика нагрузки.
Может ли это быть вызвано конфигурацией Nginx? Помощь приветствуется.
@MathieuBour Nginx упакован в контейнер, запущено только 1 приложение, поэтому классы Ingress не используются.
Что ж, я предлагаю вам добавить свой vhost в вопрос, чтобы все могли проверить.






Вы должны установить политику трафика в вашем сервисе nginx
externalTrafficPolicy: "Local"
а также
healthCheckNodePort: "numeric port number for the service"
Подробнее в документе Сохранение исходного IP-адреса клиента
Какой у вас класс Ingress? Это nginx, о котором вы говорите, или ваш веб-сервер nginx включен в ваш контейнер?