LoadBalancer X-Forwared-For 路由后面的入口

Ingress behind LoadBalancer X-Forwared-For routing

我们的 nginx 入口控制器在负载均衡器后面。 Loadbalancer ist 在 X-Forwarded-For Headers 中设置原始主机。 例如:"x-forwarded-host": "www.portal-app.de".

我还在入口中设置了 use-forwarded-headers: "true"。

我的 Ingress 规则:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kd-portal-ingress
  namespace: kd-portal-prod
spec:
  rules:
  - host: www.portal-app.de
    http:
      paths:
      - backend:
          serviceName: my-portal-app
          servicePort: 5050    

当我调用 Url 时,我们总是得到 nginx 默认 404 页面。

它也尝试解释场景。 www.portal-app.de 正在登陆 apache 负载均衡器。这个LB会将请求代理到k8s和ingresscontroller所在的ip运行。代理在 x-forward headers 中设置源主机信息。我的规则没有任何效果,我总是点击默认后端

是否可以在入口中的负载均衡器后面定义基于主机的路由?

是的,入口主要用途仅用于此目的。您在规则中指定域。如您所见,它在数组中规则,因此您可以添加许多域,它会在后端服务上重定向您 specified.Also 您也可以创建单独的入口对象。

示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/ssl-redirect: "true"
  name: ingress
spec:
  rules:
  - host: your_domain_name
    http:
    paths:
      - backend:
          serviceName: your_service_name
          servicePort: 8080
        path: /
  tls:
  - hosts:
    - your_domain_name
    secretName: tls-certificate

我已经通过激活 apache 指令解决了这个问题 https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypreservehost