traefik注意问题

111 次阅读

本文最后更新于 2026年5月11日。

230731
今天配置tcp中间件一直出错,想起一个问题,文档一定要看和自己一致的版本文档。
我用的是v2.8版本,还没有ipAllowList,这是v3.0更改后的用法。
而是ipwhitelist。
“`
tcp:

middlewares:
    test-ipallowlist:
      ipAllowList:
        sourceRange:
          – “127.0.0.1/32”
          – 101.39.212.228
          – “192.168.1.7”

tcp:

middlewares:
    test-ipwhitelist:
      ipWhiteList:
        sourceRange:
          – “127.0.0.1/32”
          – “192.168.1.7”
“`

使用前缀和中间件去除前缀可以访问到网站但是网站在访问静态资源用不带前缀的网址仍然找不到资源。
通过相同域名不同前缀访问不同应用需要中间件去除前缀
https://blog.csdn.net/wanger5354/article/details/121358536

使用host和path配置不起作用
traefik的rule = "Host(`snitest.com`) && Path(`/foo`)"配置无效
rule = "Host(`snitest.com`) && Path(`/foo`)"

~~想要traefik能获取到docker服务需要docker标签才行,之前一直以为如果动态配置中有就不需要配置label了。
Attach labels to your containers and let Traefik do the rest!~~
增加新入口的时候更改了静态配置需要重启traefik服务才能生效
增加新入口会添加新端口,这时不仅要增加vps防火墙允许端口,同时要把trafik容器新增的端口映射出来,否则都是拒绝连接。
并且这个问题trafik的管理面板是没有错误提示的。
tcp服务代理成功用http访问会提示响应不对。
“`

This site can’t provide a secure connection

db.weiyoun.com sent an invalid response.
使用telnet命令可以正常进入新窗口。
如果端口没打开去访问,会提示拒绝连接。
配置tcp代理时如果不配置tls使用域名或者ip都可以访问。

可正常使用,无tls

tcp:
  routers:
    mariadb:
      rule: “HostSNI(*)”
      service: mariadb
      entryPoints:
        – mariadb
  services:
    mariadb:
      loadBalancer:
        # servers:
        #   – port: 3306
        servers:
          – address: localhost:3306
如果配置域名就需要配置tls然后只能通过域名访问
tcp:
  routers:
    mariadb:
      rule: “HostSNI(db.weiyoun.com)”
      service: mariadb
      entryPoints:
        – mariadb
      tls:
        certresolver: lets-encr        
  services:
    mariadb:
      loadBalancer:
        # servers:
        #   – port: 3306
        servers:
          – address: localhost:3306
“`