Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Supports appending HTTP headers of the user request to upstream based on routing of header, cookie or query #1844

Closed
lianglli opened this issue Aug 4, 2023 · 1 comment · Fixed by #1864
Assignees

Comments

@lianglli
Copy link
Member

lianglli commented Aug 4, 2023

基于Header/Cookie/Query的路由匹配,向后端upstream转发时在请求中追加指定的Header。

在请求消息的header中追加header值

如果存在相同的header名,在已有的header值后增加'&'分割符,再追加header值

如果请求消息的header不存在,则直接增加

值格式:"header name:header value[||header name:header value]*"

值校验:header以'||'分割,header名和header值以':'分割,header name和header value不允许包含':'和'||',默认最多允许追加2个header

无损动态生效,无需tengine reload。

@lianglli lianglli added this to the 3.0.1 milestone Aug 4, 2023
@lianglli lianglli self-assigned this Aug 4, 2023
@lianglli lianglli removed this from the 3.0.1 milestone Sep 18, 2023
@lianglli
Copy link
Member Author

lianglli commented Nov 1, 2023

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-by-query: open3
    nginx.ingress.kubernetes.io/canary-by-query-value: abc1||abc2||abc3||abc4||abc5||abc6||abc7||abc8||abc9||abc10||abc11||abc12||abc13||abc14||abc15||abc16||abc17||abc18||abc19||abc20||abc21
    nginx.ingress.kubernetes.io/canary-request-append-header: UserData:user=236-564-29121||test-ingress6:$ssl_protocol
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
  creationTimestamp: "2023-10-31T06:30:31Z"
  generation: 2
  name: tengine-ingress-hello-query-ing
  namespace: default
  resourceVersion: "28580135"
  uid: debebfd0-afd2-4604-af8d-a41ad400bfbc
spec:
  ingressClassName: opensource-ingress
  rules:
  - host: echo.w1.com
    http:
      paths:
      - backend:
          service:
            name: tengine-ingress-hello3-service
            port:
              number: 80
        path: /
        pathType: Prefix
  tls:
  - hosts:
    - echo.w1.com
    secretName: https-server-1
status:
  loadBalancer:
    ingress:
    - {}
$ curl -i -k -H "test-ingress6: default" https://echo.w1.com/?open3=abc2
HTTP/2 301 
server: Tengine/3.1.0
date: Wed, 01 Nov 2023 11:33:42 GMT
location: /?open3=abc2/
strict-transport-security: max-age=0
ups-target-key: default-tengine-ingress-hello3-service-80
x-protocol: HTTP/2.0
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

image

@lianglli lianglli closed this as completed Nov 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant