Google Cloud TCP Балансировщик нагрузки вперед IP

Я использую Google Cloud TCP для пересылки запросов в службу Kubernetes NGINX. Как и ожидалось, журналы на NGINX показывают IP балансировщика нагрузки. Как я могу получить фактический IP

2 ответа

Решение

Переадресованные заголовки из балансировщика нагрузки

X-Forwarded-For
X-Forwarded-Proto

Таким образом, в nginx будет использоваться $http_x_forwarded_for

location / {
  ...
  proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
  ...
}

Если вы используете Kubernetes и сервисы, вам нужно установить политику внешнего трафика на локальную

kind: Service
apiVersion: v1
metadata:
  name: proxy-service
spec:
  selector:
    app: the-application
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
  - protocol: TCP
    port: 443
    targetPort: 443
    name: https

Использование $http_x_forwarded_for переменная для входа в исходный IP-адрес пользователя.

Другие вопросы по тегам