【问题标题】:How do I add the x-forwarded-for field to my access logs for the nginx ingress controller?如何将 x-forwarded-for 字段添加到 nginx 入口控制器的访问日志中?
【发布时间】:2019-04-22 18:54:25
【问题描述】:

我在 gke 上使用 nginx 入口控制器,默认情况下,这些是我的访问日志的样子:

"10.123.0.20 - [10.123.0.20] - - [22/Apr/2019:18:47:59 +0000] "GET /sdflksdf/sdfsdf HTTP/2.0" 404 0 "-" "Mozilla/5.0 ( Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/538.12 (KHTML, like Gecko) Chrome/73.0.3683.100 Safari/537.36" 26 0.002 [default-blah-80] 10.44.0.26:80 0 0.001 404 skjf0s93jf0ws93jfsijf3

我想在我的访问日志中添加 x-forwarded-for 标头。如果可能,我希望将该字段添加到当前日志行的末尾。或者我猜在日志行的开头也可以。

我正在查看他们的文档,但我不清楚如何将 x-forwarded-for 添加到访问日志中: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/log-format/

【问题讨论】:

  • 那个“10.123.0.20” - 这应该是 $remote_addr。不是已经 X-Forwarded-For 了吗?如果不是 - 为什么?

标签: nginx kubernetes google-kubernetes-engine nginx-ingress


【解决方案1】:

您应该使用 ConfigMap 到 customize the NGINX configuration:

ConfigMaps 允许您将配置工件与图像分离 内容以保持容器化应用程序的可移植性。

ConfigMap API 资源将配置数据存储为键值 对。该数据提供了系统组件的配置 nginx 控制器。

要配置自定义日志,您需要使用log-format-upstream 键。

例如:

创建以下配置图:

apiVersion: v1
data:
  log-format-upstream: '$remote_addr - $request_id - [$proxy_add_x_forwarded_for] - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length $request_time [$proxy_upstream_name] $upstream_addr $upstream_response_length $upstream_response_time $upstream_status'
kind: ConfigMap
metadata:
  name: nginx-ingress-config

并确保您将--configmap=$(POD_NAMESPACE)/nginx-ingress-config 用作您的nginx-ingress-controller (example from offical repo here) 的命令args

【讨论】:

  • 我想使用默认的日志配置 https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/log-format/ 并在其末尾添加 x-forwarded-for 。您可以将整个内容作为字符串添加到 configMap 中,包括条件内容{{ if $cfg.useProxyProtocol }}$proxy_protocol_addr{{ else }}$remote_addr{{ end }} 吗?
【解决方案2】:

从 helm 官方 repo 安装 nginx-ingress 可以像这样将 controller.service.externalTrafficPolicy 设置为 Local。

helm install nginx-ingress stable/nginx-ingress --set rbac.create=true --set controller.service.externalTrafficPolicy=Local

【讨论】:

    猜你喜欢
    • 2020-01-17
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2020-09-12
    • 2017-01-21
    相关资源
    最近更新 更多