概览
使用 Traefik Proxy 暴露 Service
本节指导你如何使用 Traefik Proxy 安全地暴露 service。你将学习如何将 HTTP 和 HTTPS 流量路由到你的 service,添加安全功能,并实现高级负载均衡。
你将完成的内容
按照这些指南,你将学习如何:
- 使用 Gateway API 和 IngressRoute 将 HTTP 流量路由到你的 service
- 配置路由规则以定向请求
- 使用 TLS 启用 HTTPS
- 添加安全中间件
- 使用 Let's Encrypt 自动生成证书
- 为会话持久性实现粘性会话
平台特定指南
要获取针对你环境的详细步骤,请按你的平台遵循相应的指南:
高级用例
暴露 gRPC Service
Traefik Proxy 支持 gRPC 应用程序,无需特定配置。你可以使用 HTTP (h2c) 或 HTTPS 暴露 gRPC service。
使用 HTTP (h2c)
对于未加密的 gRPC 通信,请将你的 service 配置为使用 h2c:// 协议方案:
http:
routers:
grpc-router:
service: grpc-service
rule: Host(`grpc.example.com`)
services:
grpc-service:
loadBalancer:
servers:
- url: h2c://backend:8080注意
对于使用 labels 的 providers(Docker、Kubernetes),使用以下方式指定方案:
traefik.http.services.<service-name>.loadbalancer.server.scheme=h2c
使用 HTTPS
对于加密的 gRPC 通信,使用标准 HTTPS URL。Traefik 将通过 TLS 上的 HTTP/2 与你的 gRPC 后端通信:
http:
routers:
grpc-router:
service: grpc-service
rule: Host(`grpc.example.com`)
tls: {}
services:
grpc-service:
loadBalancer:
servers:
- url: https://backend:8080Traefik 自动处理协议协商。如有需要,使用 ServersTransport 为你的后端配置 TLS 证书。
暴露 WebSocket Service
Traefik Proxy 开箱即用地支持 WebSocket (WS) 和 WebSocket Secure (WSS) 连接。除了标准 HTTP 路由外,无需任何特殊配置。
基本 WebSocket
配置指向你的 WebSocket server 的 router 和 service。Traefik 自动检测并处理 WebSocket 升级:
http:
routers:
websocket-router:
rule: Host(`ws.example.com`)
service: websocket-service
services:
websocket-service:
loadBalancer:
servers:
- url: http://websocket-backend:8000WebSocket Secure (WSS)
对于加密的 WebSocket 连接,在 router 上启用 TLS。客户端使用 wss:// 连接,而你可以选择后端是使用加密还是未加密连接:
http:
routers:
websocket-secure-router:
rule: Host(`wss.example.com`)
service: websocket-service
tls: {}
services:
websocket-service:
loadBalancer:
servers:
- url: http://websocket-backend:8000 # 在 Traefik 处终止 SSL
# 或
# - url: https://websocket-backend:8443 # 端到端加密Traefik 保留 WebSocket headers,包括 Origin、Sec-WebSocket-Key 和 Sec-WebSocket-Version。如果需要修改 headers 以进行来源检查或其它要求,请使用 Headers 中间件。