基于url路径的Docker服务重定向

时间:2018-01-17 04:34:33

标签: docker nginx docker-swarm traefik

我正在使用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但是无法根据网址找到重新路由。任何建议。

1 个答案:

答案 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