在我最初尝试将基于 docker-swarm 的 Traefik 安装从 1.7 迁移到 2.0 时,我发现 traefik.toml 配置文件中默认静态指定的 SSL 配置被忽略,并且启用调试后,我的 docker 日志显示了许多类似的消息:
time="2019-11-06T20:26:30Z" level=debug msg="No default certificate, generating one"
Run Code Online (Sandbox Code Playgroud) 我有一个 VM0,其中 Traefik 作为 Docker 运行,还有两个目标系统 VM1 和 VM2,它们都运行着 Web 服务器。
所有domainA.com 请求都应通过 TCP 路由器和 tls 直通发送至 VM1,因为此 Web 服务正在自行处理证书。
所有domainB.com 请求都应通过http 路由器发送至VM2,并且Traefik 应生成该域的tls 证书。
我现在的问题是,一旦我将任何 tls 配置添加到 http 路由器,tcp 直通似乎就不再起作用了。在日志中我看到以下消息:
time="2020-03-15T21:46:18Z" level=debug msg="为请求提供默认证书:\"subdomain.DomainA.com\"" time="2020-03-15T21:46:18Z" level= debug msg="http:来自 192.168.1.116:55103 的 TLS 握手错误:远程错误:tls:未知证书" time="2020-03-15T21:46:18Z" level=debug msg="为请求提供默认证书:\ “subdomain.DomainA.com\”” time =“2020-03-15T21:46:18Z”level = debug msg =“http:来自192.168.1.116:55104的TLS握手错误:远程错误:tls:未知证书”
如果我通过 Traefik 访问该网站,它会向我显示来自 Traefik 的自签名证书。
如果我删除 http 路由器下的所有 tls 设置,直通将再次工作。
我的动态文件:
http:
routers:
HTTProuter0:
rule: "HostRegexp(`{subdomain:[a-z]+}.domainA.com`)"
service: "domainA"
entryPoints:
- "websecure"
tls:
certResolver: "myresolver"
domains:
- main: "domainA.com" …Run Code Online (Sandbox Code Playgroud) 我最近开始将 Traefik 与 Docker 结合使用,我必须说它太棒了。我目前遇到的问题是,当我将基本身份验证中间件应用到 Traefik 仪表板,然后加载仪表板时,它不断地无限循环地提示我输入用户名和密码,而我永远无法访问仪表板。然而,它在没有基本身份验证的情况下工作得很好,我可以很好地加载我的仪表板。请问有人可以帮忙吗?在过去的几天里它一直让我发疯。请参阅下面我的示例。(注意密码散列我已经尝试过在开头有或没有额外的美元符号,但都不起作用)。先感谢您。
我的 Docker 撰写文件:
version: '3'
services:
traefik:
image: "traefik:v2.2"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/user/traefik/traefik.yml:/etc/traefik/traefik.yaml:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.api.rule=Host(`traefik.com`)"
- "traefik.http.routers.api.entrypoints=insecure"
- "traefik.http.routers.api.service=api@internal"
- "traefik.http.routers.api.middlewares=api-auth"
- "traefik.http.middlewares.api-auth.basicauth.users=admin:$$..."
networks:
default:
external:
name: "web"
Run Code Online (Sandbox Code Playgroud)
我的 Traefik.yml 文件
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
network: "web" # Custom docker network
exposedByDefault: false
entryPoints:
insecure:
address: ":80"
secure:
address: ":443"
api:
dashboard: true
Run Code Online (Sandbox Code Playgroud) 我正在运行 Traefik ( v2.0 ) 作为我的 EKS 集群的入口网关。Traefik ingress 工作正常。
现在,我需要使用自签名证书为我的入口添加 https 支持。为此,我有:
Run Code Online (Sandbox Code Playgroud)kubectl create secret tls tlssecret --key="eks.tls.key" --cert="eks.tls.crt"
/auth) ...部署完成后,当我浏览入口 URL 时,它仍然向我显示 TRAEFIK DEFAULT CERT,而不是我的自签名证书。
请让我知道我在这里做错了什么?还有其他方法吗?
我正在使用 Traefik v2 运行 Docker 容器。该容器与 Nginx 一起提供服务,我需要在 Traefik v2 上启用 gzip 压缩。
我无法通过更改 Nginx app.config 文件来实现它。
我添加了这些类型的标签,但它不起作用。
gzip on;
gzip_types images, CSS, js etc.
Run Code Online (Sandbox Code Playgroud)
如何在 Traefik v2 上启用 gzip?
我想使用 traefik 2 将 test1.test 和 test2.test 路由到 nginx php 配置中的不同文件夹。两者都是 PHP 应用程序。
这是我的 nginx site.conf:
server {
listen 80;
server_name test1.test
root /var/www/html/test1;
}
server {
listen 80;
server_name test2.test
root /var/www/html/test2;
}
Run Code Online (Sandbox Code Playgroud)
这是 traefik 容器的 mij docker-compose 文件
version: "3"
services:
traefik:
image: "traefik:v2.3"
container_name: "traefik"
restart: "unless-stopped"
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
- ./traefik.toml:/traefik.toml:ro
- ./acme.json:/acme.json
- ./configurations:/configurations
networks:
proxy:
external: true
internal:
external: false
Run Code Online (Sandbox Code Playgroud)
以及我的应用程序的 …
我想通过docker-compose配置traefik以公开组件服务的多个端口。
例如,在为ember-cli应用提供服务时,如何同时公开主端口和实时重新加载端口以进行开发?
如何为日志文件(例如access.log)启用日志轮转。
这是内置的吗?
文档只说“这允许日志由外部程序(例如logrotate)旋转和处理”
我正在经历看起来像配置问题!我在kubernetes中使用traefik作为入口控制器,我有一个入口来路由一些URL以将一些前端路由到各种后端.假设我有这样的事情:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
kubernetes.io/ingress.class: traefik
traefik.frontend.rule.type: ReplacePathRegex
spec:
rules:
- host: foo.io
http:
paths:
- path: /api/authservice/(.*) /$1
backend:
serviceName: auth
servicePort: 8901
- path: /api/svcXXX/v1/files/cover/(.*) /v1/files/cover/$1
backend:
serviceName: files
servicePort: 8183
- path: /api/svcXXX/v1/files/image/(.*) /v1/files/image/$1
backend:
serviceName: files
servicePort: 8183
Run Code Online (Sandbox Code Playgroud)
使用Postman(或任何其他客户端),如果我http://foo.io/api/authservice/auth/oauth/token在查看访问日志时发出请求,它似乎被路由到http://foo.io/api/svcXXX/v1/files/image/(.*) /v1/files/image/$1.我在访问日志中看到了这一点:
[03/Jul/2018:12:57:17 +0000] "POST /api/authservice/auth/oauth/token HTTP/1.1" 401 102 "-" "PostmanRuntime/7.1.5" 15 "foo.io/api/svcXXX/v1/files/image/(.*) /v1/files/image/$1" 37ms
难道我做错了什么 ?
I'm using traefik for providing some services on my NAS with https using lets encrypt. Now I noticed that the tls certs of my nextcloud installation expired yesterday evening. Traefik had logs like this:
time="2018-08-31T22:43:08Z" level=error msg="Error getting ACME client: ACME client still not built, retrying in 6.83135832s"
time="2018-08-31T22:43:15Z" level=error msg="Error getting ACME client: ACME client still not built, retrying in 12.680203952s"
time="2018-08-31T22:43:28Z" level=error msg="Error getting ACME client: ACME client still not built"
Run Code Online (Sandbox Code Playgroud)
I updated to v1.7 but now the …
traefik ×10
docker ×3
https ×2
kubernetes ×2
nginx ×2
ssl ×2
docker-swarm ×1
drupal ×1
lets-encrypt ×1
php ×1
tcp ×1
tls1.2 ×1