使用 Traefik Proxy 暴露服务¶
本节将指导你使用 Traefik Proxy 安全地暴露服务。你将学习如何将 HTTP 和 HTTPS 流量路由到服务、添加安全功能,以及实现高级负载均衡。
你将完成什么¶
通过这些指南,你将学会:
- 使用 Gateway API 和 IngressRoute 将 HTTP 流量路由到服务
- 配置路由规则以转发请求
- 使用 TLS 启用 HTTPS
- 添加安全中间件
- 使用 Let's Encrypt 自动生成证书
- 实现粘性会话以保持会话持久性
各平台指南¶
请按照适合你的平台的指南,查看针对相应环境的详细步骤:
高级用例¶
暴露 gRPC 服务¶
Traefik Proxy 无需特殊配置即可支持 gRPC 应用。你可以通过 HTTP(h2c)或 HTTPS 暴露 gRPC 服务。
使用 HTTP(h2c)
对于未加密的 gRPC 通信,请将服务配置为使用 h2c:// 协议方案:
http:
routers:
grpc-router:
service: grpc-service
rule: Host(`grpc.example.com`)
services:
grpc-service:
loadBalancer:
servers:
- url: h2c://backend:8080
说明
对于使用标签的提供者(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:8080
Traefik 会自动处理协议协商。如有需要,请使用 ServersTransport 为后端配置 TLS 证书。
暴露 WebSocket 服务¶
Traefik Proxy 开箱即用地支持 WebSocket(WS)和安全 WebSocket(WSS)连接。除了标准 HTTP 路由之外,无需特殊配置。
基本 WebSocket 配置
配置指向 WebSocket 服务器的路由器和服务。Traefik 会自动检测并处理 WebSocket 升级:
http:
routers:
websocket-router:
rule: Host(`ws.example.com`)
service: websocket-service
services:
websocket-service:
loadBalancer:
servers:
- url: http://websocket-backend:8000
安全 WebSocket(WSS)
对于加密的 WebSocket 连接,请在路由器上启用 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 # SSL termination at Traefik
# OR
# - url: https://websocket-backend:8443 # End-to-end encryption
Traefik 会保留 WebSocket 请求头,包括 Origin、Sec-WebSocket-Key 和 Sec-WebSocket-Version。如果需要修改请求头以检查来源或满足其他要求,请使用 Headers 中间件。