将Traefik StripPrefix中间件添加到docker compose标签将导致504
我已经开发了几个docker化的全堆栈web应用程序,我正在尝试使用Traefik将请求路由到这些应用程序。我想通过docker compose标签利用动态配置。我想应用stripPrefix中间件选项,这样我就可以使用相同的应用程序路由,就像每个应用程序都在根目录下提供一样。但是,一旦应用这些规则,就会产生504网关超时响应 以下是我的设置:将Traefik StripPrefix中间件添加到docker compose标签将导致504,docker,nginx,docker-compose,middleware,traefik,Docker,Nginx,Docker Compose,Middleware,Traefik,我已经开发了几个docker化的全堆栈web应用程序,我正在尝试使用Traefik将请求路由到这些应用程序。我想通过docker compose标签利用动态配置。我想应用stripPrefix中间件选项,这样我就可以使用相同的应用程序路由,就像每个应用程序都在根目录下提供一样。但是,一旦应用这些规则,就会产生504网关超时响应 以下是我的设置: Traefik 2.0.1 Docker 19.03.2,Compose 1.24.1 NGINX:最新图片 运行Traefik容器的全局docker
- Traefik 2.0.1
- Docker 19.03.2,Compose 1.24.1
- NGINX:最新图片
- 运行Traefik容器的
全局
docker网络
- 多个多容器应用程序,每个应用程序都包括一个NGINX web服务器
- 所有应用程序都有自己的
网络,NGINX容器也在本地
网络上全局
- 每个应用程序都配置为在
/
docker compose.yml
定义:
nginx:
image: nginx:latest
container_name: "mps_nginx"
volumes:
- ./nginx/confs/nginx.conf:/etc/nginx/default.conf
- ./static:/www/static
restart: "always"
labels:
- traefik.http.routers.mps.rule=Host(`localhost`) && PathPrefix(`/mps`)
- traefik.http.middlewares.strip-mps.stripprefix.prefixes=/mps
- traefik.http.routers.mps.middlewares=strip-mps@docker
networks:
- default
- mps
令人恼火的是,当我注释出middleware
标签时,它运行得很好,但找不到匹配的URL模式
在此之前,我使用以下文件中定义的whoami
容器测试了我的方法:
请求http://localhost/whoami
返回(除其他外)
GET/HTTP/1.1
这正是我期望我的路由方法在所有其他应用程序中工作的方式。Traefik仪表板在我注册的每个中间件周围都显示绿色,但我看到的只是504个错误
如果有人有任何线索,我将不胜感激。有一个带前缀但不以“/”结尾的单词。
按如下方式测试配置:
- "traefik.http.routers.whoami.rule=Host(`localhost`) && (PathPrefix(`//whoami/`) || PathPrefix(`/portainer`))"
- "traefik.http.middlewares.strip-who.stripprefix.prefixes=/whoami"
我有一个类似的问题,通过添加
-“traefik.http.middleware.strip who.stripprefix.forceslash=true”
它确保条带前缀不会同时删除正斜杠
您可以阅读有关forceslash
文档的更多信息是否需要路径前缀(/portainer
)?
- "traefik.http.routers.whoami.rule=Host(`localhost`) && (PathPrefix(`//whoami/`) || PathPrefix(`/portainer`))"
- "traefik.http.middlewares.strip-who.stripprefix.prefixes=/whoami"