用作kubernetes入口控制器时在Traefik中使用自定义错误页面

时间:2018-06-20 11:01:04

标签: kubernetes traefik kubernetes-ingress

我正在将Traefik用作入口控制器,并具有与以下类似的入口设置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    traefik.ingress.kubernetes.io/error-pages: |
      test:
        status:
        - "404"
        backend: my-service
        query: "/404.json"
  name: my-ingress
spec:
  rules:
  - host: dev.mydomain.com
    http:
      paths:
      - backend:
          serviceName: my-service
          servicePort: 80
        path: /

我希望这会将错误页面替换为my-service / 404.json的结果,但它会从后端返回正常的404响应,并且后端日志甚至不会显示对/404.json的请求。我能够使它返回其他任何内容的唯一方法是将后端设置为dev.mydomain.com/,并且得到响应Forbidden,并且Traefik日志中的消息如

time="2018-06-20T10:57:54Z" level=debug msg="request &{Method:GET URL:http://0.0.0.0/404.json Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[User-Agent:[curl/7.60.0] Accept:[*/*]] Body:<nil> GetBody:<nil> ContentLength:0 TransferEncoding:[] Close:false Host:0.0.0.0 Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI:/404.json TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc420b7a0f0} - rejecting: missing port in address"

我在做什么错?如果我必须指定域而不是服务名称,为什么它与指定后端的其他地方不同?

0 个答案:

没有答案