Global Header Rules

Define header rules and execute them in order. The gateway uses forward, insert, rename_duplicate or remove rules to manage headers for subgraphs:

[[headers]] rule = "forward" name = "authorization" [[headers]] rule = "forward" name = "x-custom-header" rename = "y-custom-header" [[headers]] rule = "forward" name = "x-possible-empty" default = "default-value"

Forward multiple headers by using a regular expression.

The engine matches headers in lowercase. Write your regular expression in lowercase, or add a flag to match both lowercase and uppercase letters.

[[headers]] rule = "forward" pattern = "^x-custom*"

Use the insert rule to add header values:

[[headers]] rule = "insert" name = "authorization" value = "Bearer secret-token"

Insert header values from environment variables:

[[headers]] rule = "insert" name = "authorization" value = "Bearer {{ env.AUTHORIZATION_TOKEN }}"

Use the remove rule to block header forwarding for headers that match patterns:

[[headers]] rule = "remove" name = "x-custom-secret"

The rename_duplicate rule forwards the defined header value and copies the value with the specified rename to the subgraphs.

[[headers]] rule = "rename_duplicate" name = "x-custom-value" default = "the value was missing" rename = "y-custom-value"

The gateway forwards two headers to the subgraph with the same value - one named x-custom-value and one named y-custom-value. When a request is missing the x-custom-value header, and you define a default value, the gateway creates both headers using that default value. If you omit the default, the gateway doesn't forward the header or create a duplicate.

These headers don't use header rules:

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Ranges
  • Connection
  • Content-Length
  • Content-Type
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • TE
  • Trailer
  • Transfer-Encoding
  • Upgrade