首页 > 解决方案 > Nginx 入口控制器不会通过重定向保留 url

问题描述

我正在尝试设置一个 nginx 入口控制器;这是入口的yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-rules
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "false"

spec:
  rules:
  - host: 
    http:
      paths:
      - path: /discover-service
        backend:
          serviceName: discover-service
          servicePort: discover-port

当我点击http://IP/discover-service时,它​​会显示一个没有 CSS 和 JS 的 HTML。如我所见,它们在http://IP/eureka/css/file.css而不是http://IP/discover-service/css/file.css下查看。

在这种情况下如何保留原始网址?

更新#1

现在我可以通过创建两个入口来提供静态文件,例如:

ingress-rules-discover-root.yaml

[..]
metadata:
  name: ingress-rules-discover-root

  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    [...]

spec:
  rules:
  - host: 
    http:
      paths:

      - path: /discover-service
        backend:
          serviceName: discover-service
          servicePort: discover-port

还有一个

[...]
metadata:
  name: ingress-rules-discover-path
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    [...]

spec:
  rules:
  - host: 
    http:
      paths:
      - path: /eureka
        backend:
          serviceName: discover-service
          servicePort: discover-port

标签: nginxkubernetesnginx-reverse-proxykubernetes-ingress

解决方案


我相信在这种情况下,您需要删除注释:

nginx.ingress.kubernetes.io/rewrite-target: /

此注释使入口重写http://IP/discover-service/css/file.csshttp://IP/eureka/css/file.css


推荐阅读