how do I add the x-forwarded-for field to my access logs for the nginx ingress controller?
我在gke上使用nginx入口控制器,默认情况下,这些是我的访问日志:
1 | "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 skjf0s93jf0ws93jfsijf3s3fjs3i |
我想在我的访问日志中添加x-forward-for标头。如果可能的话,Id希望将该字段添加到当前日志行的末尾。或者在日志行的开头也可以,我猜
我正在查看他们的文档,但我不清楚如何在访问日志中添加x-forward-for:
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/log-format/
您应该使用ConfigMap自定义NGINX配置:
ConfigMaps allow you to decouple configuration artifacts from image
content to keep containerized applications portable.The ConfigMap API resource stores configuration data as key-value
pairs. The data provides the configurations for system components for
the nginx-controller.
要配置自定义日志,您需要使用
例如:
创建以下配置映射:
1 2 3 4 5 6 | 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 |
,并确保您正在对nginx-ingress-controller使用
像这样通过将
1 | helm install nginx-ingress stable/nginx-ingress --set rbac.create=true --set controller.service.externalTrafficPolicy=Local |