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