docker - 用 Traefik 重写路径

标签 docker nginx kubernetes reverse-proxy traefik

有人可以举一个简单的例子来说明如何路由以下 URL:

http://monitor.app.com/service-one
http://monitor.app.com/service-two
http://monitor.app.com/service-three
http://monitor.app.com/service-four

到以下后端服务?
http://service-one/monitor
http://service-two/monitor
http://service-three/monitor
http://service-four/monitor

最好使用 Traefik 的 [file] 语法,尽管任何都可以。

最佳答案

这是您的示例的配置。根据您的实际集群配置进行调整:

apiVersion: v1
kind: Service
metadata:
  name: service-one
spec:
  selector:
    k8s-app: service-one-app
  ports:
  - port: 80
    targetPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: service-two
spec:
  selector:
    k8s-app: service-two-app
  ports:
  - port: 80
    targetPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: service-three
spec:
  selector:
    k8s-app: service-three-app
  ports:
  - port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: monitor.app
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/rewrite-target: /monitor # set path to result request
spec:
  rules:
  - host: monitor.app.com
    http:
      paths:
      - path /service-one  # path for routing, it will be removed because of PathPrefixStrip settings
        backend:
          serviceName: service-one
          servicePort: 80
      - path /service-two  # path for routing, it will be removed because of PathPrefixStrip settings
        backend:
          serviceName: service-two
          servicePort: 80
      - path /service-three  # path for routing, it will be removed because of PathPrefixStrip settings
        backend:
          serviceName: service-three
          servicePort: 80

可以在此处找到其他信息:
  • Kubernetes Ingress Controller
  • Kubernetes Ingress Provider
  • kubernetes ingress rewrite-target implementation #1723
  • 关于docker - 用 Traefik 重写路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50504881/

    相关文章:

    docker - 无法从待定状态恢复Docker群

    kubernetes - Grafana HTTP 错误网关错误和模板初始化失败错误

    kubernetes - 在 YAML 部署配置中使用其他部署 IP

    mongodb - 使用 Java (Windows) 连接到在 Docker 中运行的 MongoDB 副本集

    docker - 如何使用 docker 设置 Sentry

    nginx - 重启 nginx : nginxnginx: [emerg] bind() to 0. 0.0.0:80 failed (98: Address already in use)

    php - Drupal、nginx、ssl 和 php——一场噩梦

    networking - 开发机器作为 Minikube 网络的一部分?

    docker - 如何知道弹性重启失败重启容器的原因

    ubuntu - 如何通过不同端口(80 以外)启动 nginx