我正在尝试使用Azure上的Kubernetes通过我的NGINX入侵传递我的客户IP地址
我为NGINX配置创建了这个configmap以添加标题:
apiVersion: v1
data:
X-Real-IP: $remote_addr;
X-Forwarded-For: $proxy_add_x_forwarded_for;
X-Forwarded-Proto: $proxy_x_forwarded_proto;
use-forwarded-headers: "true"
use-proxy-protocol: "true"
real-ip-header: "proxy_protocol"
kind: ConfigMap
metadata:
name: custom-headers
namespace: default然后添加此配置以引用上一个文件:
apiVersion: v1
data:
proxy-set-headers: "custom-headers"
externalTrafficPolicy: Local
kind: ConfigMap
metadata:
name: ingress-nginx-controller
namespace: default
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx如果我描述我的nginx控制器:
kubectl describe deploy ingress-nginx-controller我能看到台词:
--configmap=$(POD_NAMESPACE)/ingress-nginx-controller如果我描述入口-nginx-控制器的configmap
kubectl describe configmap ingress-nginx-controller我可以在数据部分看到以下内容:
proxy-set-headers:
----
custom-headers但是,如果我在控制器中注销了nginx.conf文件,则无法看到更改的值。例如,这仍然是默认的:
proxy_set_header X-Forwarded-For $remote_addr;发布于 2021-10-15 10:21:46
您缺少代理集标头值的命名空间前缀。因为您已经将custom-headers configmap部署到默认的命名空间,所以它应该是
data:
proxy-set-headers: default/custom-headers发布于 2021-10-15 12:23:12
我已经运行了一些测试,用户亚杜提供的答案应该是正确的。
问题解释:您正在为ConfigMaps使用proxy-set-headers配置选项。它描述得很好,这里
在将流量发送到后端之前,从命名configmap中设置自定义标头。值格式是命名空间/名称。请参阅示例
在本例中,您可以通过ConfigMap找到nginx入口控制器的配置,以便向上游服务器传递自定义的报头列表。
看看yaml示例:
apiVersion: v1
data:
proxy-set-headers: "ingress-nginx/custom-headers"
kind: ConfigMap
metadata:
name: ingress-nginx-controller
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx问题解决方案:您需要在此选项中使用适当的格式:
proxy-set-headers: "<your namespace>/custom-headers"https://stackoverflow.com/questions/69556600
复制相似问题