Nginx入口-错误的src客户端IP(X-Real-Ip)

时间:2019-07-30 11:57:28

标签: kubernetes kubernetes-helm nginx-ingress

在Kubernetes(通过头盔安装)中使用nginx-ingress时,<?php $diplayed_categories = []; //initializing array foreach ($_productCollection as $_product): ?> <div class="bk-all-products"> <?php $bk_product_id = $_product->getCategoryIds(); $bk_category_id = $bk_product_id[1]; if(!in_array($bk_category_id, $diplayed_categories)){ //testing if not in array $diplayed_categories[] = $bk_category_id; //filling the array //moved inside the if, no need to fetch it again if it exists //$categoryId = $bk_category_id; //useless var $_objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $category = $_objectManager->create('Magento\Catalog\Model\Category') ->load($bk_category_id); //replaced by $bk_category_id $bk_category_id_name = $category->getName(); echo $bk_category_id_name; echo "<br><br>"; } ?> </div> <?php endforeach; ?> 不是我的真实IP(不保留原始客户端IP)

我已经按照建议尝试了X-Real-IpexternalTrafficPolicy: "Local",但没有帮助...

1 个答案:

答案 0 :(得分:0)

您能为我们提供更多信息,例如您正在使用的service

通过快速猜测,您似乎在错误的服务上应用了externalTrafficPolicy: "Local"

我以前也将它应用于我的NodePort服务而不是 Nginx服务,但是它不起作用

请检查类型为LoadBalancer的服务,通常将其命名为nginx-nginx-ingress-controller,快速的kubectl get services --all-namespaces可以为您显示所有正在运行的服务的列表。

TLDL

Local意味着,当数据包到达Pod时,即使相同集群中的其他Pod负载较少,kube代理也只会在同一节点Pod中分配负载。

另一方面,在设置Cluster值时,平衡不仅考虑节点,还考虑分配请求的Pod数量,并且为了避免不平衡,Kubernetes在群集内执行平衡。

https://medium.com/pablo-perez/k8s-externaltrafficpolicy-local-or-cluster-40b259a19404

https://github.com/jetstack/kube-lego/issues/57#issuecomment-277777686