我\xe2\x80\x99\xe2\x80\x99m想知道\xe2\x80\x9c如何将Nginx IP附加到X-Forwarded-For\xe2\x80\x9d
\n\n我在 Ingress 注释中添加了片段。
\n\napiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: ing\n annotations:\n nginx.ingress.kubernetes.io/configuration-snippet: |\n proxy_set_header X-Forwarded-For "$remote_addr, $server_addr";\n
Run Code Online (Sandbox Code Playgroud)\n\n但它似乎在 nginx.conf 中进行了双重设置。
\n\n proxy_set_header X-Forwarded-For $remote_addr;\n...\n proxy_set_header X-Forwarded-For "$remote_addr, $server_addr";\n
Run Code Online (Sandbox Code Playgroud)\n\n所以我的后端服务器将得到两个X-Forwarded-For
有人知道\xe2\x80\x9c如何禁用Nginx Ingress Controller\xe2\x80\x9d生成的proxy_set_header部分吗?
\n\n proxy_set_header X-Request-ID $req_id;\n proxy_set_header X-Real-IP $remote_addr;\n\n proxy_set_header X-Forwarded-For $remote_addr;\n\n proxy_set_header X-Forwarded-Host $best_http_host;\n proxy_set_header X-Forwarded-Port $pass_port;\n proxy_set_header X-Forwarded-Proto $pass_access_scheme;\n\n proxy_set_header X-Scheme $pass_access_scheme;\n
Run Code Online (Sandbox Code Playgroud)\n 我在 GKE 中创建了一个类型为:LoadBalancer 的 kubernetes 服务。
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: http
selector:
app: nginx
Run Code Online (Sandbox Code Playgroud)
这是一个 nginx 服务并尝试获取原始客户端 IP。喜欢
location / {
echo $remote_addr;
echo $http_x_forwarded_for;
}
Run Code Online (Sandbox Code Playgroud)
但结果会得到:
10.140.0.97
Run Code Online (Sandbox Code Playgroud)
$remote_addr
就像在 kubernetes IP 中一样。
$http_x_forwarded_for
是空的。
我不知道为什么这不像文件所说的那样。
https://cloud.google.com/load-balancing/docs/network
网络负载平衡是一个直通负载平衡器,这意味着您的防火墙规则必须允许来自客户端源 IP 地址的流量。
https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview#ext-lb
如果您的服务需要从集群外部和 VPC 网络外部访问,您可以通过在定义服务时将服务的类型字段设置为 LoadBalancer 将您的服务配置为负载均衡器。然后,GKE 在服务前预置网络负载均衡器。网络负载均衡器了解集群中的所有节点,并配置您的 VPC 网络的防火墙规则,以允许使用服务的外部 IP 地址从 VPC 网络外部连接到服务。您可以为服务分配一个静态外部 IP 地址。有关详细信息,请访问使用静态 IP 地址配置域名。
load-balancing google-cloud-platform kubernetes google-kubernetes-engine
我没有注意到我的 GKE 集群位于 Rapid 通道中。直到今天我想添加节点池。
表明Node version "1.17.5-gke.6" is unsupported.
https://cloud.google.com/kubernetes-engine/docs/release-notes-rapid#may_27_2020
我的问题是:
我在 gcloud cli、官方文档和 stackoverflow 中找不到任何相关内容。