traefik yml配置

本文详细介绍了Traefik的配置,包括静态配置文件traefik.yml,涉及流量入口、日志记录、API访问等设置。动态配置dynamic_conf.yml中,重点阐述了HTTP路由器、服务定义、中间件的使用,如用户认证、限流、断路器等。此外,还提到了认证文件gateway/auth用于所有子系统的通用认证,并展示了启动Traefik的命令。
摘要由CSDN通过智能技术生成

 静态配置 traefik.yml

# 流量入口
entryPoints:
  # 定义入口,任意起名
  web:
    # 监听端口
    address: :80
    forwardedHeaders:
      insecure: true
  #    http:
  #      redirections:
  #        #转发到另一个入口
  #        entryPoint:
  #          to: websecure
  #          scheme: https
  # 443入口,任意起名
  websecure:
    address: :443
    forwardedHeaders:
      insecure: true

# 动态配置
providers:
  file:
    filename: gateway/dynamic_conf.yml

# 工作日志
log:
  filePath: gateway/traefik.log

# 访问日志
accessLog:
  filePath: gateway/access.log
  # 保留在内存中的日志行数
  bufferingSize: 100
  fields:
    names:
      # 设置本地时区,不然默认是0时区时间输出
      StartLocal: keep
      StartUTC: drop

api:
  # false为启用安全访问
  insecure: false

动态配置 dynamic_conf.yml

http:
  routers:
    #定义一个路由,任意起名
    #项目前端
    project-ui:
      # 匹配规则,满足规则后会执行中间件,在调用服务
      rule: "Host(`project.com`)"
      service: project-ui
      # 匹配权重,0是无权重,越大越优先匹配
      #      priority: 0
      middlewares:
        - breaker
        - limit
        - errorpage

    # 项目后端
    project-backend:
      # PathPrefix 路径前缀 匹配 project.com/backend/*
      rule: "Host(`project.com`) && PathPrefix(`/backend`)"
      service: project-backend
      middlewares:
        - breaker
        - limit
        # 访问 /backend/*,实际请求转发的是 localhost:8082/*
        - strip
        - errorpage

    # 服务中心
    project-consul:
      # PathPrefix 路径前缀 匹配 project.com/consul/*,实际请求转发的是 localhost:8500/consul/*
      rule: "Host(`project.com`) && (PathPrefix(`/consul`)|| PathPrefix(`/v1`) )"
      middlewares:
        # 使用自定义的中间件
        - auth
      service: project-consul

    # traefik 内置web仪表盘
    dashboard:
      rule: "Host(`project.com`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
      # 内部api服务
      service: api@internal
      # 使用中间件,auth安全访问
      middlewares:
        - auth

  middlewares:
    # 定义一个中间件,任意起名
    # 用户认证
    auth:
      # 使用官方的中间件
      basicAuth:
        usersFile: gateway/auth
    # 断路器
    breaker:
      circuitBreaker:
        # 网络错误率达到10%时,打开断路器
        # 或者
        # 25%的请求返回5XX状态(在返回状态代码从0到5XX的请求中),打开断路器
        # 断路器打开后,服务就会不可用,过段时间会自动恢复
        expression: NetworkErrorRatio() > 0.10 || ResponseCodeRatio(500, 600, 0, 600) > 0.25
    # 限流
    limit:
      rateLimit:
        # 每秒请求数
        average: 10
    # 跳过前缀路径
    strip:
      stripPrefix:
        prefixes:
          - /backend
    # 错误页面
    errorpage:
      errors:
        # 指定状态码
        status:
          - 500-599
          - 404
        service: project-ui
        # 服务提供错误页面的网址
        query: /{status}.html

  services:
    # 定义一个服务,任意起名
    project-ui:
      # 负载均衡,轮询策略
      loadBalancer:
        # 配置多个服务器
        servers:
          - url: http://localhost:8081
        healthCheck:
          path: /health
          interval: 10s
          timeout: 3s

    # 项目后端服务
    project-backend:
      # 负载均衡,轮询策略
      loadBalancer:
        servers:
          - url: http://localhost:8082
        # 健康检查,每隔10s,检查一次,也就是去请求/health
        healthCheck:
          # 检查路径,自定义起名,自己服务器需支持此路径
          # 返回状态代码2XX或3XX就认为是健康的,否则不健康会被移除
          path: /health
          # 检查调用的频率,每10秒调用一次
          interval: 10s
          # 超时时间设置
          timeout: 3s

    # 项目服务中心
    project-consul:
      # 负载均衡,轮询策略
      loadBalancer:
        servers:
          - url: http://localhost:8500
        healthCheck:
          path: /v1/agent/checks
          interval: 10s
          timeout: 3s

 gateway/auth认证文件,认证一次,所有子系统通用,退出浏览器失效 

ps: 密码必须使用MD5,SHA1或BCrypt进行哈希处理,可以使用htpasswd生成的密码。

在线生成工具

test:$apr1$yjHwJ6kr$szcYpC.dwpayQYlZu4N5d1

启动命令 --configFile 值为相对工作目录的配置文件位置

traefik --configFile=gateway/traefik.yml

 

Traefik 是一款现代化的 HTTP 反向代理服务器和负载均衡器,支持多种现代网络服务。配置 HTTP 响应头 `X-Frame-Options` 的目的是为了防止恶意框架注入攻击,这种攻击通常被称为点击劫持。 `X-Frame-Options` 响应头可以设置为以下三种值: 1. **SAMEORIGIN** - 允许页面在其源域内嵌入到其他网页中。 2. **DENY** - 禁止页面被其他网页嵌入。 3. **PERMITALL** - 允许页面被任意网页嵌入,这是最危险的选择,用于测试目的。 若您希望将 `X-Frame-Options` 设置为特定值并在 Traefik配置,则需要修改 Traefik 的 `docker-compose.yml` 文件(如果是 Docker 容器部署的话),或者在运行时通过 CLI 参数动态配置。 ### 使用 docker-compose.yml 配置 如果您正在使用 `docker-compose.yml` 文件,并且 Traefik 作为容器运行,您可以在配置文件中添加以下内容: ```yaml services: traefik: command: ["--entrypoints.web.redirectEntry=web"] environment: - TRAEFIK_HTTP_ENTRYPOINTS=http://0.0.0.0:80 - TRAEFIK_API entrypoints=api - TRAEFIK.toml \ "[http.routers.default.entryPoints] web" \ "[http.middlewares.FrameProtection.frameoptions action=Deny]" ``` 在这里,“FrameProtection”是一个自定义的中间件名称,用于实现对 `X-Frame-Options` 响应头的设置。“action=Deny” 表示设置为禁止嵌入。 ### 动态配置通过 CLI 参数 如果你使用的是命令行界面启动 Traefik,可以通过 `-httpMiddlewares.XFrameOptions.action` 来动态指定配置: ```bash traefik run \ --conf /path/to/your/config.yaml \ --http-middleswares.XFrameOptions.action Deny \ --http-entrypoints.http.address :80 ``` 这里的 `/path/to/your/config.yaml` 应该替换为你 Traefik配置文件路径。 ### 注意事项 确保在启用安全响应头前理解其影响。如需调试,可以先选择 `SAMEORIGIN` 或者暂时禁用此设置以观察应用的行为,然后再根据实际情况做出调整。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值