fabiolb / fabio

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

fabio http global redirect interferes with gRPC listener port #768

Open tommyalatalo opened 4 years ago

tommyalatalo commented 4 years ago

When using the below global redirect for http to https, the routing for gRPC services (on port 8888) fails, seemingly because the global redirect route also catches whatever comes in on 8888.

route add http-to-https *:80/ https://$host$path opts "redirect=301"

So when having the above catch-all and trying to send grpc traffic I end up with this:

❯ ./my_grpc_bin -s 192.168.0.40:8888
rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp: address $host$path: missing port in address"

The only route that I have containing $host$path is the one above, so it seems that the gRPC and http traffic over 80 are not separated properly?

fabio config:

VAULT_ADDR="http://vault:8200"
REGISTRY_CONSUL_ADDR="consul:8500"
REGISTRY_CONSUL_TOKEN="<token>"
REGISTRY_CONSUL_KVPATH="/system/fabio/config"
PROXY_ADDR=":80;proto=http,:443;proto=https;cs=vault,:8888;proto=grpc,:8443;proto=grpcs;cs=vault"
PROXY_CS="cs=vault;type=vault;cert=secret/service/fabio/certs"