跳到正文
Træfɪk

使用 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 中间件。


版权所有 © 头文件软件工作室

文档由 HeadFile Studio 翻译。

Traefik v3.7 中文快照 · 原文版权归 Traefik Labs 及贡献者所有 · MIT 许可证