fabiolb / fabio

Consul Load-Balancing made simple
https://fabiolb.net
MIT License
7.25k stars 620 forks source link

Forwarding of compressed gRPC requests #874

Open alexdohm opened 2 years ago

alexdohm commented 2 years ago

I'm trying to forward gRPC requests that have been compressed with gzip, but it looks like Fabio is not forwarding the request. I've seen under the following link, that Fabio has the functionality to forward compressed HTTP requests, so I'm wondering if it's possible with gRPC.

https://fabiolb.net/feature/http-compression/

below is my nomad file. I have also set theAccept-Encoding: gzip header on the client

The error we are receiving on our test client when trying to make a request to the server is : grpc: Decompressor is not installed for grpc-encoding "gzip"

job "fabio" {
  datacenters = ["dc1"]
  type        = "system"

  group "fabio" {
    network {
      port "lb" {
        static = 9999
      }
      port "ui" {
        static = 9998
      }
      port "grpc" {
        static = 8888
      }
    }
    task "fabio" {
      driver = "docker"
      config {
        image        = "fabiolb/fabio"
        network_mode = "host"
        ports        = ["lb", "ui", "grpc"]
      }
      env {
        proxy_addr             = ":9999;proto=http,:8888;proto=grpc"
        proxy_gzip_contenttype = "^.*$"
      }
      resources {
        cpu    = 200
        memory = 128
      }
    }
  }
}
nathanejohnson commented 2 years ago

It looks like that's not being registered when the grpc server is being set up. It's pretty easy to register the gzip as an available compression option, but I don't have a good way to test if it's working. If I made a one-off build available on docker hub would you be able to test that way?