首页 > 解决方案 > 无法解析 Traefik 中的 URL 出现错误 404

问题描述

我面临的问题对我来说有些了解,但我仍然想了解我的实施中的问题。

我有一个 Traefik 容器和一个服务容器。服务容器具有服务页面的某些路由。为了将 Traefik 的请求传递到服务/应用程序容器,我在容器上附加了一个标签。标签在我的应用程序中有一个路径,以便 Traefik 可以将请求重定向到后端服务,最后我的服务可以为请求提供服务。

主要问题:到目前为止一切正常,但问题是我的应用程序/服务提供了一些静态页面,这些页面位于 Traefik 无法识别的另一条路线上。这将生成错误 404。我无法找到解决此问题的方法。

例如:我有一个服务 A 为http://localhost/blog上的请求提供服务,所有进一步的请求都通过localhost/blog/*。为此,我将简单地添加带有PathPrefix( /blog)的标签。它使一切正常,但没有加载 JS 和 CSS 文件。相同的原因是我的 css 和 js 文件是从http://localhost/jshttp://localhost/css路由加载的。当然,这条路线不被 Traefik 识别。

Docker-Compose.yml

servicea:
        container_name: servicea-ge
        image: 'servicea'
        restart: always
        labels:
            - traefik.http.routers.servicea.rule=PathPrefix(`/blog`)
        networks:
            - internal-network
        logging:
            driver: json-file
            options: {max-size: 20m, max-file: '5'}
        environment:
            TZ: '${Time_Zone}'
networks:
    internal-network:
        driver: bridge
        name: test

我尝试了一个解决方案,其中我添加了一个中间件来剥离 /blog但这也会导致进一步的问题。现在主页已成功加载,但/blog/addblog等其他路由开始失败,因为 blog 将被删除(原因剥离中间件)。例如:

- traefik.http.routers.servicea.middlewares=strip-blog
- traefik.http.middlewares.strip-blog.stripprefix.prefixes=/blog

任何人都可以提出上述问题的解决方案吗?

标签: dockercontainersreverse-proxytraefik

解决方案


推荐阅读