envoyproxy/gateway

Supression of X-Envoy headers breaks expected output of default log format

Open

#2,903 opened on 2024年3月13日

GitHub で見る
 (5 comments) (2 reactions) (0 assignees)Go (802 forks)auto 404
help wantedkind/bug

Repository metrics

Stars
 (2,871 stars)
PR merge metrics
 (PR metrics pending)

説明

Description:

After the changes in #2500 and #2585 logs no longer include the proper request path where path rewrites are used.

Repro steps:

If you apply the quickstart demo and then add a rule to the HTTPRoute:

    - backendRefs:
        - group: ""
          kind: Service
          name: backend
          port: 3000
          weight: 1
      matches:
        - path:
            type: PathPrefix
            value: /rewrite
      filters:
        - type: URLRewrite
          urlRewrite:
            path:
              type: ReplacePrefixMatch
              replacePrefixMatch: /123

This request:

curl -sv -H "Host: www.example.com" 'http://172.18.255.200/rewrite/something?foo=bar'

Would normally (and previously did) result in the following log output):

{
  "start_time": "2024-03-13T02:18:21.648Z",
  "method": "GET",
  "x-envoy-origin-path": "/rewrite/something?foo=bar",
  "protocol": "HTTP/1.1",
  "response_code": "200",
...
  "duration": "1",
  "x-envoy-upstream-service-time": "0",
...
}

It is now incorrectly outputting the rewritten path instead and losing the original request path:

{
  "start_time": "2024-03-13T02:23:29.892Z",
  "method": "GET",
  "x-envoy-origin-path": "/123/something?foo=bar",
  "protocol": "HTTP/1.1",
  "response_code": "200",
...
  "duration": "1",
  "x-envoy-upstream-service-time": "-",
...
}

コントリビューターガイド