Thanks for the information.
I can confirm that Tyk does work when using HTTP and gRPC for one port. I have shared a snippet of my API definitions at the bottom of this reply and outlined the main differences needed for it to work below:
- Both API definition protocols have to be set as
http
- Each respective target URL should use their intended protocol. For example HTTP API definition would use
http://
and the gRPC API definition would useh2c://
- The gRPC listen path must be set as the root (
/
), while the HTTP can have a sub path like/http/
.
I will try to reproduce the issue with HTTPs and RPC on two different ports and give you the feedback.
HTTP API Definition
...
"listen_port": 6067,
"protocol": "http",
"proxy": {
"check_host_against_uptime_tests": false,
"disable_strip_slash": false,
"enable_load_balancing": false,
"listen_path": "/http/",
"preserve_host_header": false,
"service_discovery": {
"_sd_show_port_path": false,
"cache_timeout": 0,
"data_path": "",
"endpoint_returns_list": false,
"parent_data_path": "",
"port_data_path": "",
"query_endpoint": "",
"target_path": "",
"use_discovery_service": false,
"use_nested_query": false,
"use_target_list": false
},
"strip_listen_path": true,
"target_list": [],
"target_url": "http://host.docker.internal:80/anything",
}
...
gRPC API Definition
...
"listen_port": 6067,
"protocol": "http",
"proxy": {
"check_host_against_uptime_tests": false,
"disable_strip_slash": false,
"enable_load_balancing": false,
"listen_path": "/",
"preserve_host_header": false,
"service_discovery": {
"_sd_show_port_path": false,
"cache_timeout": 0,
"data_path": "",
"endpoint_returns_list": false,
"parent_data_path": "",
"port_data_path": "",
"query_endpoint": "",
"target_path": "",
"use_discovery_service": false,
"use_nested_query": false,
"use_target_list": false
},
"strip_listen_path": true,
"target_list": [],
"target_url": "h2c://host.docker.internal:50052"
}
...