Kong Ingress Controller - 删除 Kong 相关 headers
Kong Ingress Controller - Remove Kong related headers
我在 Kubernetes 集群上安装了 Kong,使用 kubernetes-ingress-controller 功能 (https://github.com/Kong/kubernetes-ingress-controller)。
我想删除以下 Kong 的相关 headers:
- "X-Kong-Upstream-Latency"
- "X-Kong-Proxy-Latency"
- "Via"
- "Server"
我尝试通过应用以下 KongPlugin 资源来使用 response-transformer 插件:
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: kong-response-transformer
config:
remove:
headers:
- "X-Kong-Upstream-Latency"
- "X-Kong-Proxy-Latency"
- "Via"
- "Server"
plugin: response-transformer
但只有 "Server" header 从响应中删除。有没有办法通过使用一些自定义资源以 "kubernetes-ingress-controller" 的方式从响应中删除这样的 header?
我发现了几个与此问题相关的 GitHub 问题 (1, 2),但所有这些问题都涉及更新 Kong 配置文件 (/etc/kong/kong.yml) 的可能性,我老实说不知道如何在我的 Kubernetes 环境中应用此类更改。将以下行传递到 ConfigMap 并不能解决问题:
# Add additional response headers
header_filter_by_lua_block {
kong.header_filter()
ngx.header["Server"] = nil
ngx.header["Via"] = nil
ngx.header["X-Kong-Proxy-Latency"] = nil
ngx.header["X-Kong-Upstream-Latency"] = nil
}
有什么帮助吗?
谢谢...
编辑:Kong版本为2.0.3,kong-ingress-controller版本为0.8.1。
您可以通过 headers
configuration property. Also noted on the same page is the fact that configuration properties can also be specified as environment variables.
禁用这些 headers
因此,您可以更新部署以将 headers = off
属性 指定为环境变量。类似于:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ingress-kong
namespace: kong
spec:
template:
spec:
containers:
name: proxy
image: kong:2.0.3
env:
- name: KONG_HEADERS
value: off
我遇到了确切的问题并在找到此线程后修复了它。
由于我直接构建 Docker kong 图像,我在 Docker 文件中添加了以下步骤以注入环境变量
ENV KONG_HEADERS='off'
@thibaultcha 是对的。
看着 https://github.com/Kong/kong/blob/9f2b1d984057336cc6075c287ec38ad59323fe6e/kong.conf.default#L656
我们可以看到headers的定义。
headers 环境更改为 KONG_HEADERS
使用 Helm 时需要做的就是将 headers 添加到 values.yaml 文件中并设置为“off”
env:
headers: 'off'
我在 Kubernetes 集群上安装了 Kong,使用 kubernetes-ingress-controller 功能 (https://github.com/Kong/kubernetes-ingress-controller)。
我想删除以下 Kong 的相关 headers:
- "X-Kong-Upstream-Latency"
- "X-Kong-Proxy-Latency"
- "Via"
- "Server"
我尝试通过应用以下 KongPlugin 资源来使用 response-transformer 插件:
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: kong-response-transformer
config:
remove:
headers:
- "X-Kong-Upstream-Latency"
- "X-Kong-Proxy-Latency"
- "Via"
- "Server"
plugin: response-transformer
但只有 "Server" header 从响应中删除。有没有办法通过使用一些自定义资源以 "kubernetes-ingress-controller" 的方式从响应中删除这样的 header?
我发现了几个与此问题相关的 GitHub 问题 (1, 2),但所有这些问题都涉及更新 Kong 配置文件 (/etc/kong/kong.yml) 的可能性,我老实说不知道如何在我的 Kubernetes 环境中应用此类更改。将以下行传递到 ConfigMap 并不能解决问题:
# Add additional response headers
header_filter_by_lua_block {
kong.header_filter()
ngx.header["Server"] = nil
ngx.header["Via"] = nil
ngx.header["X-Kong-Proxy-Latency"] = nil
ngx.header["X-Kong-Upstream-Latency"] = nil
}
有什么帮助吗? 谢谢...
编辑:Kong版本为2.0.3,kong-ingress-controller版本为0.8.1。
您可以通过 headers
configuration property. Also noted on the same page is the fact that configuration properties can also be specified as environment variables.
因此,您可以更新部署以将 headers = off
属性 指定为环境变量。类似于:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ingress-kong
namespace: kong
spec:
template:
spec:
containers:
name: proxy
image: kong:2.0.3
env:
- name: KONG_HEADERS
value: off
我遇到了确切的问题并在找到此线程后修复了它。 由于我直接构建 Docker kong 图像,我在 Docker 文件中添加了以下步骤以注入环境变量
ENV KONG_HEADERS='off'
@thibaultcha 是对的。
看着 https://github.com/Kong/kong/blob/9f2b1d984057336cc6075c287ec38ad59323fe6e/kong.conf.default#L656
我们可以看到headers的定义。
headers 环境更改为 KONG_HEADERS
使用 Helm 时需要做的就是将 headers 添加到 values.yaml 文件中并设置为“off”
env:
headers: 'off'