我正在使用docker swarm并在容器内的8443和主机容器上的8444,8445,8446上运行每个运行3个tomcat服务。
我希望使用在8443上运行的代理服务器,它会根据网址路径将传入请求重定向到相应的服务
https://hostname:8443/a – > https://hostname:8444/a
https://hostname:8443/b – > https://hostname:8445/b
https://hostname:8443/c – > https://hostname:8446/c
我的示例Docker-compose文件
version: "3"
services:
tomcat1 :
image: tomcat:1
ports:
- "8446:8443"
tomcat2 :
image: tomcat:1
ports:
- "8444:8443"
tomcat3 :
image: tomcat:1
ports:
- "8445:8443"
我已经探索过traeffik和nginx但是无法根据网址找到重新路由。任何建议。
答案 0 :(得分:0)
您可以使用基于规则的traefik标签主机和路径 http://docs.traefik.io/basics/#frontends
像
这样的东西version: "3"
services:
traefik:
image: traefik
command: --web --docker --docker.swarmmode --docker.watch --docker.domain=hostname
ports:
- "80:80"
- "8080:8080"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
placement:
constraints: [node.role == manager]
restart_policy:
condition: on-failure
tomcat1:
image: tomcat:1
labels:
- traefik.backend=tomcat1
- traefik.frontend.rule=Host:hostname;PathPrefixStrip:/a
- traefik.port=8443