다른 인그레스 컨트롤러에는 작동 방식을 사용자 지정하는 데 사용할 수 있는 다양한 옵션이 있습니다. NGINX Ingress 컨트롤러에는 여기에서 볼 수 있는 많은 옵션이 있습니다 . 나는 우리 연구실에서 사용할 그러한 옵션 중 하나를 설명하고 싶습니다. 대상 재 작성 옵션.

아래를 달성하려면 Ingress를 구성해야 합니다. 사용자가 왼쪽의 URL을 방문하면 그의 요청이 내부적으로 오른쪽의 URL로 전달되어야 합니다. /watch 및 /wear URL 경로는 백엔드의 적절한 애플리케이션으로 사용자를 전달할 수 있도록 인그레스 컨트롤러에서 구성한 것입니다. 애플리케이션에 다음 URL/경로가 구성되어 있지 않습니다.

rewrite-target옵션이 없으면 다음 과 같이 됩니다.

대상 URL의 끝에 watch및 주의 . 대상 응용 프로그램이 또는 경로 wear로 구성되지 않았습니다 . 그들은 그들의 목적을 위해 특별히 만들어진 다른 응용 프로그램이므로 URL에 또는 예상하지 않습니다. 따라서 요청이 실패하고 찾을 수 없음 오류가 발생합니다./watch/wear/watch/wear404

요청이 시계 또는 마모 응용 프로그램에 전달될 때 URL을 "다시 작성"하고 싶은 문제를 수정합니다. 사용자가 입력한 것과 동일한 경로를 전달하고 싶지 않으므로 rewrite-target옵션을 지정합니다. rules->http->paths->path이것은 이 경우에 발생하는 모든 것을 /pay의 값 으로 대체하여 URL을 다시 작성합니다 rewrite-target. 이것은 검색 및 바꾸기 기능처럼 작동합니다.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: critical-space
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /pay
        backend:
          serviceName: pay-service
          servicePort: 8282

In another example given here, this could also be:

replace("/something(/|$)(.*)", "/$2")

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - backend:
          serviceName: http-svc
          servicePort: 80
        path: /something(/|$)(.*)