traefik - 通过新的子域公开辅助内部端口
traefik - expose secondary internal port via new subdomain
我编写了一个在两个端口上侦听的 .NET API 应用程序:
- 5000 用于常规 HTTP 请求 (HTTP1)
- gRPC (HTTP2) 为 5001
我正在使用标签通过 docker-compose
部署我的图像:
labels:
- "traefik.enable=true"
- "traefik.http.routers.myApi.rule=Host(`api.example.com`)"
- "traefik.http.routers.myApientrypoints=websecure"
- "traefik.http.routers.myApitls.certresolver=myresolver"
现在,我的问题是 - 如果我的容器 EXPOSE 5000 和 5001,我该如何设置一个新的子域,以便我可以允许常规网络流量以及 gRPC
?
这样:
HTTP1 https://api.example.com -> container:5000
HTTP2 https://api-grpc.example.com -> container:5001
如果有更好的实现方法,请告诉我。由于严格的 HTTP2
要求,我不能让 gRPC
监听与网络流量相同的端口,我宁愿不使用 gRPC-web
.
labels:
- traefik.http.routers.http-router.rule=Host(`api.example.com`)
- traefik.http.routers.http-router.service=http-service
- traefik.http.services.http-service.loadbalancer.server.port=5000
- traefik.http.routers.grpc-router.rule=Host(`api-grpc.example.com`)
- traefik.http.routers.grpc-router.service=grpc-service
- traefik.http.services.grpc-service.loadbalancer.server.port=5001
- traefik.http.services.grpc-service.loadbalancer.server.scheme=h2c
参考:Specifying more than one router and service per container
我编写了一个在两个端口上侦听的 .NET API 应用程序:
- 5000 用于常规 HTTP 请求 (HTTP1)
- gRPC (HTTP2) 为 5001
我正在使用标签通过 docker-compose
部署我的图像:
labels:
- "traefik.enable=true"
- "traefik.http.routers.myApi.rule=Host(`api.example.com`)"
- "traefik.http.routers.myApientrypoints=websecure"
- "traefik.http.routers.myApitls.certresolver=myresolver"
现在,我的问题是 - 如果我的容器 EXPOSE 5000 和 5001,我该如何设置一个新的子域,以便我可以允许常规网络流量以及 gRPC
?
这样:
HTTP1 https://api.example.com -> container:5000
HTTP2 https://api-grpc.example.com -> container:5001
如果有更好的实现方法,请告诉我。由于严格的 HTTP2
要求,我不能让 gRPC
监听与网络流量相同的端口,我宁愿不使用 gRPC-web
.
labels:
- traefik.http.routers.http-router.rule=Host(`api.example.com`)
- traefik.http.routers.http-router.service=http-service
- traefik.http.services.http-service.loadbalancer.server.port=5000
- traefik.http.routers.grpc-router.rule=Host(`api-grpc.example.com`)
- traefik.http.routers.grpc-router.service=grpc-service
- traefik.http.services.grpc-service.loadbalancer.server.port=5001
- traefik.http.services.grpc-service.loadbalancer.server.scheme=h2c
参考:Specifying more than one router and service per container