如何解决Traefik不会路线
要测试Traefik,我制作了一个类似Whoami的应用程序,该应用程序出现在Traefik的获得陈述文档中,该响应消息通过友好的消息响应对'/'和'/ sub'端点的GET HTTP请求。我已经验证了将whoami更改为通过不同路径回答确实可以,但是由于某些原因,即使我配置了与whoami相同的配置,Traefik也无法解析我的应用。我知道首先想到的是,如果我以与whoami相同的方式配置我的应用程序,那么问题就出在我的应用程序上,但是curl确实可以从Traefik的容器中访问我的应用程序,因此它吸引了我想知道Traefik是否有某些东西可以使whoami应用程序工作,而我的应用程序却无法工作。我知道这是一个愚蠢的假设,但是除了响应HTTP Get请求外,我看不到我的应用程序还需要做什么。您可以看到应用程序以及我如何here进行所有操作,只需要查看build.sh
。我要解决的另一个问题是在群体模式下配置Traefik,我不得不创建Traefik映像,而不是将配置作为参数传递。主要配置在下面的代码和traefik_rp中显示,它只是traefik的图像,带有一个tom文件将其设置为sarmMode。
version: '3'
services:
traefik:
# The official v2 Traefik docker image
image: traefik_rp
# Enables the web UI and tells Traefik to listen to docker
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
simple_app:
image: simpleapp
environment:
ASPNETCORE_ENVIRONMENT: Release
labels:
- "traefik.http.routers.simple_app_service.rule=Path(`/simpleapp`)"
whoami:
# A container that exposes an API to show its IP address
image: containous/whoami
labels:
- "traefik.http.routers.whoami.rule=Path(`/`)"
最诚挚的问候。
解决方法
我检查文档太简短了,但是尝试将其添加到标签中:
labels:
- traefik.enable=true
- traefik.frontend.entryPoints=http,https
,
Traefik不会从HTTP请求中清除路由,它以与接收到应用程序相同的方式传递。因此,您的应用程序必须回答在Traefik上配置的相同路由。无论访问哪个路由,whoami应用程序都可能被编程为发出HTTP响应,而我编程的应用程序仅响应根('/')路径。
,尝试使用PathPrefix
而不是Path
。否则,将仅精确匹配/simpleapp
。您需要/simpleapp
,/simpleapp/
和/simpleapp/sub
。
simple_app:
image: simpleapp
environment:
ASPNETCORE_ENVIRONMENT: Release
labels:
- "traefik.http.routers.simple_app_service.rule=PathPrefix(`/simpleapp`)"
正如其他答案所建议的那样,请确保您的应用程序也处理/simpleapp
前缀。否则,您需要使用StripPrefix。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。