Skip to content

概览

使用 Traefik Proxy 暴露 Service

本节指导你如何使用 Traefik Proxy 安全地暴露 service。你将学习如何将 HTTP 和 HTTPS 流量路由到你的 service,添加安全功能,并实现高级负载均衡。

你将完成的内容

按照这些指南,你将学习如何:

  • 使用 Gateway APIIngressRoute 将 HTTP 流量路由到你的 service
  • 配置路由规则以定向请求
  • 使用 TLS 启用 HTTPS
  • 添加安全中间件
  • 使用 Let's Encrypt 自动生成证书
  • 为会话持久性实现粘性会话

平台特定指南

要获取针对你环境的详细步骤,请按你的平台遵循相应的指南:

高级用例

暴露 gRPC Service

Traefik Proxy 支持 gRPC 应用程序,无需特定配置。你可以使用 HTTP (h2c) 或 HTTPS 暴露 gRPC service。

使用 HTTP (h2c)

对于未加密的 gRPC 通信,请将你的 service 配置为使用 h2c:// 协议方案:

yaml
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 后端通信:

yaml
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 Service

Traefik Proxy 开箱即用地支持 WebSocket (WS) 和 WebSocket Secure (WSS) 连接。除了标准 HTTP 路由外,无需任何特殊配置。

基本 WebSocket

配置指向你的 WebSocket server 的 router 和 service。Traefik 自动检测并处理 WebSocket 升级:

yaml
http:
  routers:
    websocket-router:
      rule: Host(`ws.example.com`)
      service: websocket-service

  services:
    websocket-service:
      loadBalancer:
        servers:
          - url: http://websocket-backend:8000

WebSocket Secure (WSS)

对于加密的 WebSocket 连接,在 router 上启用 TLS。客户端使用 wss:// 连接,而你可以选择后端是使用加密还是未加密连接:

yaml
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,包括 OriginSec-WebSocket-KeySec-WebSocket-Version。如果需要修改 headers 以进行来源检查或其它要求,请使用 Headers 中间件

基于 MIT 协议发布