VXVX Docs

HTTP proxy

HttpServerConfig and HttpClientConfig

Standard HTTP proxy protocol (CONNECT tunneling and plain HTTP forwarding). Proto: protos/proto/vx/proxy/http/http.proto

This is not HTTP transport disguise (TransportConfig.http) — see Transport HTTP.

  • Inbound (HttpServerConfig): accepts client HTTP proxy requests, supporting CONNECT and plain HTTP (absolute URL)
  • Outbound (HttpClientConfig): initiates CONNECT to an upstream HTTP proxy, establishing a TCP tunnel. UDP is not supported

HttpServerConfig

Empty message with no configuration fields.

The inbound handler supports:

  • CONNECT — relays the TCP stream after returning 200 Connection established
  • Plain HTTP — forwards HTTP/1.1 requests with absolute URLs (not CONNECT)

Only TCP (and UNIX socket) inbounds are supported. HttpServerConfig itself has no authentication fields.

{
  "@type": "type.googleapis.com/vx.proxy.http.HttpServerConfig"
}

HttpClientConfig

account

Optional HTTP proxy authentication. When non-empty, sends a Proxy-Authorization: Basic ... header in the CONNECT request.

h1SkipWaitForReply
bool

HTTP/1 CONNECT optimization, default false.

  • false: send the CONNECT request first, wait for the proxy to return 200, then send the first payload
  • true: write the first payload in the same write as the CONNECT request (for upstreams that require the first packet with the handshake); also extends the timeout for waiting for the first payload to 1 second

No effect on HTTP/2 CONNECT (HTTP/2 can already carry the first payload in the request body).

{
  "@type": "type.googleapis.com/vx.proxy.http.HttpClientConfig",
  "account": {
    "username": "user",
    "password": "pass"
  }
}

Account

username
string

Proxy authentication username

password
string

Proxy authentication password

  • Transport HTTP — HTTP/2 transport disguise (different purpose)
  • Outbounds — embed HttpClientConfig in protocol
  • Inbounds — embed HttpServerConfig in protocol

Comments