Http Custom Headers

Chained Final Info Headers

We won’t reset or append new values. So we can make sure the value is set by the proxy that is nearest to upstream.

X-BD-Upstream-Id

If this header is set, it means the response is from remote. The value for this value is server_id.

If we see this header in error response, we can know that the response is coming from the server after the one with the same server_id, which may be upstream server, or another chained proxy server.

This header is controlled by http_proxy server option http_forward_mark_upstream.

X-BD-Upstream-Addr

If set, it will contains the remote address we are trying connect to from the far-most proxy server.

This header is controlled by http_proxy server option echo_chained_info.

X-BD-Outgoing-Ip

If set, it will contains the local bind ip address we are using to connect to remote from the far-most proxy server.

This header is controlled by http_proxy server option echo_chained_info.

Local Info Headers

Every proxy configured will append new values. The value comes first if the proxy is nearer to upstream.

X-BD-Remote-Connection-Info

The value format:

<server_id>[; bind=<bind_ip>][; remote=<remote_addr>][; local=<local_addr>][; expire=<expire_rfc3339>]
  • bind_ip

    the ip address we decide to bind to before connection.

  • remote_addr

    the socket address we decide to connect to before connection.

  • local_addr

    the local socket address we bound to after the connection established.

  • expire_rfc3339

    expire time of the remote peer. This field won’t be set if the remote side is the target upstream.

This header is controlled by http_proxy server option server_id.

X-BD-Dynamic-Egress-Info

The value format:

<server_id>[; isp=<isp>][; ip=<ip>][; area=<area>]
  • isp

    ISP for the egress ip address.

  • ip

    The egress ip address from external view.

  • area

    Area of the egress ip address. The format is strings joined with ‘/’, like 中国/山东/济南.