是否有一种方法可以使用流量路由到非dockerized web应用程序



我有两个web应用程序在不同的端口上运行,我想使用traefk来反向代理,而不需要dockerizing web应用程序。有办法做到这一点吗?下面是我的尝试:

version: '3'
services:

traefik:
image: traefik:alpine
labels:
- traefik.frontend.rule=Host:traefik.mysite.co.zw
- traefik.port=8080
- traefik.enable=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${PWD}/traefik.toml:/etc/traefik/traefik.toml
- ${PWD}/acme.json:/acme.json

ports:
- 80:80
- 443:443
- 8080:8080
admin-web:
ports:
- '8300:8300'
labels:
- traefik.frontend.rule=Host:admin.mysite.co.zw
- traefik.port=8300
- traefik.enable=true


client-web:
ports:
- '8400:8400'
labels:
- traefik.frontend.rule=Host:client.mysite.co.zw
- traefik.port=8400
- traefik.enable=true

如果它们不是docker容器,则它们不属于docker-compose文件。你必须在Traefik动态配置文件中引用它们,作为一个服务和路由器。

## DYNAMIC CONFIGURATION
http:
services:
srv-client-web:
loadBalancer:
servers:
- url: "http://yourinternalIP:8400"
srv-admin-web:
loadBalancer:
servers:
- url: "http://yourinternalIP:8300"
routers:
rtr-client-web:
entryPoints:
- websecure
rule: "Host(`client.mysite.co.zw`)"
service: srv-client-web 
rtr-admin-web:
entryPoints:
- websecure
rule: "Host(`admin.mysite.co.zw`)"
service: srv-admin-web 

除此之外:

  • 不要在互联网上为Traefik仪表板打开8080端口,除非你在中间放置认证中间件;
  • 使用Let's Encrypt证书,只开放443端口(毕竟是2021年);
  • 你也需要有一个静态配置文件,来放置你的入口点,对你的动态配置的引用,证书提供者和很多。