Skip to content

RollSite: Passing Through a HTTP 1 Network

Max edited this page Oct 27, 2021 · 9 revisions

RollSite uses gRPC as its communication library. gRPC is a HTTP/2 based protocol. But in some cases your customer only supports HTTP/1 connections. You may need additional setup for HTTP1.

We use nghttpx to deal with this case. nghttpx is a HTTP/2 proxy. It is part of the nghttp2 tools and you can find it here: https://github.com/nghttp2/nghttp2

For one site, you need 2 nghttpx processes: one to translate outbound HTTP/2 traffics to HTTP/1, the other to translate inbound HTTP/1 traffics to HTTP/2.

# HTTP/2 -> HTTP/1, i.e. outbound traffic
# 9471 is the forward proxy port, and 192.168.1.50:9371 is the next hop / local nginx or everything the other end of HTTP/1 route
nghttpx -s -f'0.0.0.0,9471;no-tls' -b'192.168.1.50,9371' -LINFO
# HTTP/1 -> HTTP/2, i.e. inbound traffic
# 9371 is the reverse proxy port, and 9370 is the actual RollSite process
nghttpx -f'0.0.0.0,9371;no-tls' -b'127.0.0.1,9370;;proto=h2' -LINFO

If you want to use HTTPS/1, a few nghttpx parameters need to adjust. You can refer to the nghttpx manual and see or stay tuned.

PS: nghttpx is not the only HTTP/2 <-> HTTP/1 translator out there. Users can use any tools for this translation. E.g. envoy is another good option.