使用Nginx Ingress重定向资源路径

时间:2019-05-15 08:41:18

标签: kubernetes kubernetes-ingress nginx-ingress

我的部署和服务运行正常,可以通过http://my.server.net:32142获得-返回JSON

这是Service的输出

NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
ok                NodePort    10.104.118.110   <none>        8080:32142/TCP   92m

入口:

NAME          HOSTS                    ADDRESS   PORTS   AGE
ok            my.server.net            80      86m

但是我在使用Ingress时遇到了挑战,该挑战无法将我重定向到所需的资源

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ok
  labels:
    app: ok
    system: test
spec:
  rules:
  - host: my.server.net
    http:
      paths:
      - path: /test
        backend:
          serviceName: ok
          servicePort: 8080

预期输出: http://my.server.net/testhttp://my.server.net:32142/test在仅返回404错误时应返回JSON

1 个答案:

答案 0 :(得分:0)

请尝试在请求中使用自定义标头,以便您的Ingress Controller可以找到用于传入流量的正确主机的路由,否则您将遇到默认后端(404),如下所示:

curl http://<IP_ADDRESS*>/test -H 'Host:my.server.net'

其中IP_ADDRESS是LoadBalancer的IP(即Ingress Controller的前端),最终您可以尝试使用表单<IP_OF_NODE>:<NodePort>,但这取决于您公开Ingress Controller的方式。

请阅读here有关Ingress配置的更多信息,即所谓的“基于名称的虚拟主机”