欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

Traefik

Traefik — 一个云原生反向代理和负载均衡器,自动发现服务并动态配置路由。

Traefik 是我这两年用得最顺手的网络工具,没有之一。如果你还在手动写 Nginx 配置、每次改个端口都要 reload 一遍,那你真的该试试它。这玩意儿最骚的地方在于——它压根不需要你手动改配置文件,只要你的服务一启动,Traefik 自己就感知到了,然后自动把路由、证书、负载均衡全搞定。

它到底能干嘛?

说白了,Traefik 是一个反向代理 + 负载均衡器,但它跟 Nginx、HAProxy 那种传统选手最大的区别是:动态配置。传统代理你得写好 upstream、location,改完还得 reload;Traefik 直接监听 Docker、Kubernetes、Consul 这些后端,服务一上线,路由自动生成,证书自动申请(Let‘s Encrypt),连 HTTPS 都给你自动续期。

它解决的核心痛点就是微服务架构下的路由管理混乱。比如你 Docker 里跑了 10 个 Web 服务,每个端口都不一样,手动维护 Nginx 的 upstream 列表简直想死。Traefik 会自动发现这些容器,根据你打的标签(Label)或者注解(Annotation)来生成路由规则,你只需要告诉它“哪个域名对应哪个容器”就行。

另外,它原生支持TCP、UDP、HTTP/2、gRPC、WebSocket,几乎覆盖所有场景。而且自带一个漂亮的 Web 面板,实时展示所有路由、服务、负载均衡状态,调试的时候爽到飞起。

下载方式

官方下载链接:https://traefik.io/download/
如果你想直接拿二进制文件,GitHub Release 页面也有:https://github.com/traefik/traefik/releases

我建议直接用 Docker 镜像,因为 Traefik 本身就是为容器环境设计的。Docker Hub 地址:https://hub.docker.com/_/traefik

安装方法

1. 直接二进制安装(Linux/macOS)

下载对应平台的二进制文件,扔到 /usr/local/bin 就行:

# Linux amd64
wget https://github.com/traefik/traefik/releases/download/v3.0.0/traefik_v3.0.0_linux_amd64.tar.gz
tar -xzf traefik_v3.0.0_linux_amd64.tar.gz
sudo mv traefik /usr/local/bin/
traefik version

2. Docker 安装(推荐)

这是最常用的方式,一行命令启动:

docker run -d --name traefik \
  -p 80:80 \
  -p 443:443 \
  -p 8080:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  traefik:v3.0

注意那个 -v /var/run/docker.sock,这是 Traefik 能自动发现 Docker 容器的关键——它通过 Docker Socket 实时监听容器变化。

3. Docker Compose 安装

创建 docker-compose.yml:

version: '3'

services:
  traefik:
    image: traefik:v3.0
    container_name: traefik
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"  # 管理面板
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.yml:/traefik.yml  # 配置文件
      - ./acme.json:/acme.json      # Let's Encrypt 证书存储
    networks:
      - web

networks:
  web:
    external: true

基础使用教程

第一步:写个最简单的配置文件

在 traefik.yml 里写:

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false  # 默认不暴露,需要手动加标签

api:
  dashboard: true
  insecure: true  # 生产环境别这么干,这里演示用

启动后访问 http://localhost:8080 就能看到 Traefik 面板。

第二步:用 Docker 标签配置服务

假设你有一个 Web 应用容器,叫 myapp,想通过 app.example.com 访问。启动时加上标签:

docker run -d --name myapp \
  --label "traefik.enable=true" \
  --label "traefik.http.routers.myapp.rule=Host(\`app.example.com\`)" \
  --label "traefik.http.services.myapp.loadbalancer.server.port=3000" \
  myapp:latest

Traefik 监听到这个容器启动后,会自动创建一条路由:当请求 app.example.com 时,转发到该容器的 3000 端口。

如果你用 Docker Compose,标签写在 labels 字段里:

services:
  myapp:
    image: myapp:latest
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.myapp.rule=Host(\`app.example.com\`)"
      - "traefik.http.services.myapp.loadbalancer.server.port=3000"

第三步:配置 HTTPS(自动证书)

Traefik 最爽的功能之一:自动从 Let's Encrypt 申请证书。在 traefik.yml 里加:

certificatesResolvers:
  letsencrypt:
    acme:
      email: your-email@example.com
      storage: acme.json
      httpChallenge:
        entryPoint: web

然后容器标签里指定使用这个证书解析器:

labels:
  - "traefik.http.routers.myapp.tls=true"
  - "traefik.http.routers.myapp.tls.certresolver=letsencrypt"

第一次访问时,Traefik 会自动申请证书,以后自动续期,全程无感。

进阶技巧

1. 中间件(Middleware)实现限流、重定向、认证

Traefik 的中间件概念非常强大,像流水线一样处理请求。比如限制某个路由的访问频率:

labels:
  - "traefik.http.middlewares.limit-10.ratelimit.average=10"
  - "traefik.http.middlewares.limit-10.ratelimit.burst=20"
  - "traefik.http.routers.myapp.middlewares=limit-10"

或者把 HTTP 自动重定向到 HTTPS:

labels:
  - "traefik.http.middlewares.redirect-https.redirectscheme.scheme=https"
  - "traefik.http.routers.myapp.middlewares=redirect-https"

2. 路径前缀剥离

如果你的服务跑在 /api 路径下,但容器里实际是根路径,可以加个中间件去掉前缀:

labels:
  - "traefik.http.middlewares.strip-api.stripprefix.prefixes=/api"
  - "traefik.http.routers.myapp.middlewares=strip-api"
  - "traefik.http.routers.myapp.rule=Host(\`api.example.com\`) && PathPrefix(\`/api\`)"

3. 灰度发布(金丝雀发布)

通过权重分配流量到不同版本的服务:

labels:
  - "traefik.http.services.myapp-v1.loadbalancer.server.port=3000"
  - "traefik.http.services.myapp-v2.loadbalancer.server.port=3001"
  - "traefik.http.services.myapp.loadbalancer.server.scheme=http"
  - "traefik.http.services.myapp.loadbalancer.server.weight=80%"
  - "traefik.http.services.myapp.loadbalancer.server.weight=20%"

4. 使用 File Provider 管理复杂路由

如果你不想用 Docker 标签(或者服务不在 Docker 里),可以用文件配置:

providers:
  file:
    filename: /etc/traefik/dynamic.yml

然后 dynamic.yml 里写:

http:
  routers:
    myapp:
      rule: "Host(`app.example.com`)"
      service: myapp-service
      tls: {}
  services:
    myapp-service:
      loadBalancer:
        servers:
          - url: "http://192.168.1.10:3000"
          - url: "http://192.168.1.11:3000"

5. 监控和指标

Traefik 原生支持 Prometheus 指标,配置一下就能集成:

metrics:
  prometheus:
    addEntryPointsLabels: true
    addServicesLabels: true

然后 Prometheus 抓取 http://localhost:8080/metrics 即可。

总结

Traefik 最大的魅力在于让反向代理变得“无感”。你不需要再手动维护一堆配置文件,只要把服务跑起来,贴上标签,一切自动完成。对于 Docker 重度用户、Kubernetes 玩家,或者任何微服务架构,它都是提升效率的神器。

当然,它也不是万能的——如果你的场景极其简单(就一个静态站点),Nginx 可能更轻量。但但凡你的服务数量超过 3 个、需要动态发现、或者想自动搞 HTTPS,Traefik 绝对值得一试。

最后提醒一句:生产环境记得关掉 api.insecure,用 HTTP Basic Auth 或者 OAuth 保护你的管理面板。别像我第一次一样,裸奔上生产,第二天发现面板被爬虫扫了个遍……😅

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消