Docker 我可以通过托管的Traefik容器为Rancher服务器提供服务器吗?

Docker 我可以通过托管的Traefik容器为Rancher服务器提供服务器吗?,docker,rancher,traefik,Docker,Rancher,Traefik,我有一个单独的专用服务器,在那里我安装了一个Rancher服务器和一个Rancher客户端,用于托管一些停靠的服务 我已经成功地安装了Traefik,它配置了Rancher API后端,它反向代理我的服务,在HTTPS后面托管它们,一切正常 但我仍然通过网络访问我的Rancher服务器htttp://12.34.56.78:8080. 我还想把Rancher服务器放在Traefik后面,并启用https 我尝试用以下命令启动Rancher服务器: sudo docker run -d \

我有一个单独的专用服务器,在那里我安装了一个Rancher服务器和一个Rancher客户端,用于托管一些停靠的服务

我已经成功地安装了Traefik,它配置了Rancher API后端,它反向代理我的服务,在HTTPS后面托管它们,一切正常

但我仍然通过网络访问我的Rancher服务器htttp://12.34.56.78:8080. 我还想把Rancher服务器放在Traefik后面,并启用https

我尝试用以下命令启动Rancher服务器:

sudo docker run -d \
  -v /data/rancher/server/data:/var/lib/mysql \
  --restart=unless-stopped \
  -p 8080:8080 \
  -l traefik.frontend.rule=Host:rancher.mydomainname.com \
  -l traefik.enable=true \
  -l traefik.backend=rancher \
  -l traefik.default.protocol=http \
  -l traefik.port=8080 \
  rancher/server:v1.6.12
(与我配置所有其他服务的方式相同)但Traefik没有选择它,因为(我认为)Traefik正在监视的Rancher API请求中没有出现Rancher服务器(因为Rancher服务器是在Rancher外部启动的,而不是由它托管的)

来自,这是通过那个工具

如果我的推理是正确的,Traefik无法以这种方式“拾取”Rancher服务器,那么我正在考虑的另一个解决方案是,可能我必须单独为Rancher服务器创建一个
[文件]
部分,并将其添加到Traefik.toml文件中

这是实现我想要的目标的正确方法,还是有更好的方法


谢谢

部分回答我的问题

创建单独的静态
rancherserver.toml
文件:

[backends]
[backends.rancherserver]
    [backends.rancherserver.servers.server1]
    url = "http://12.34.56.78:8080"
    weight = 10

[frontends]
[frontends.rancherserver]
backend = "rancherserver"
passHostHeader = true
entrypoints = ["https"] 
    [frontends.rancherserver.routes.onlyone]
    rule = "Host:rancher.mydomain.com"
(其中12.34.56.78是物理服务器的实际物理IP地址)似乎解决了我的问题,能够在htttps://rancher.mydomain.com (自动从http转发到https)

但是由于某种原因,我仍然能够从访问Rancher服务器htttp://12.34.56.78:8080 (注意,这不是https),尽管物理服务器已经防火墙了除80和433(以及其他一些)之外的所有端口(Ubuntu上的ufw):


所以,我仍然认为我误用了Traefik,并允许8080端口通过我的Traefik配置泄漏…:(

我几乎迟到了2年,但我刚开始用
traefik
[docker]
牧场主

docker为rancher编写文件:

version: '3'

services:

  web:
   image: rancher/rancher:latest
   labels:
     traefik.enable: true
     traefik.backend: rancher
     traefik.frontend.entryPoints: http,https
     traefik.frontend.passHostHeader: true
     traefik.frontend.rule: "Host:rancher.mydomain.com"
     traefik.backend.port: 80
     traefik.port: 80
   restart: unless-stopped

也许这对任何在这个问题上绊倒的人都有用。

我知道这是一个老问题,但留下一条评论只是为了记录:你可以通过htttp://12.34.56.78:8080 因为您已经在
docker run
命令中发布了端口。docker绕过防火墙并启用所有手动发布精简端口。如果您使用
traefik
您不需要发布端口。Trafik使用docker的内部网络来路由流量。在上述配置中,我看不到端口
8080
被拒绝。docker不会“绕过防火墙”。它可能会创建新的网络,但任何流量仍然必须通过主机接口(使用防火墙)。
version: '3'

services:

  web:
   image: rancher/rancher:latest
   labels:
     traefik.enable: true
     traefik.backend: rancher
     traefik.frontend.entryPoints: http,https
     traefik.frontend.passHostHeader: true
     traefik.frontend.rule: "Host:rancher.mydomain.com"
     traefik.backend.port: 80
     traefik.port: 80
   restart: unless-stopped