Traefik-找不到对象404
我有以下规则:Traefik-找不到对象404,traefik,Traefik,我有以下规则: [backends] [backends.pma] [backends.pma.servers.server1] url = "http://phpmyadmin:80" [backends.rabbitmq] [backends.rabbitmq.servers.server1] url = "http://rabbitmq:15672" [frontends] [frontends.pma] backend = "pma"
[backends]
[backends.pma]
[backends.pma.servers.server1]
url = "http://phpmyadmin:80"
[backends.rabbitmq]
[backends.rabbitmq.servers.server1]
url = "http://rabbitmq:15672"
[frontends]
[frontends.pma]
backend = "pma"
[frontends.pma.routes.test_1]
rule = "Host:pma.example.it"
passHostHeader = true
[frontends.rabbitmq]
backend = "rabbitmq"
[frontends.rabbitmq.routes.test_1]
rule = "Host:pma.example.it;Path:/rabbitmq"
主机pma.example.it工作,我看到phpmyadmin,主机pma.example.it/rabbitmq不工作,我有{“错误”:“未找到对象”,“原因”:“未找到”}
但是,如果我键入
curl,则从traefik容器http://rabbitmq:15672
它工作正常。有什么想法吗?后端配置中缺少一行
[backends]
[backends.pma]
[backends.pma.servers] # <----------add this
[backends.pma.servers.server1]
url = "http://phpmyadmin:80"
[后端]
[backends.pma]
[backends.pma.servers]#您是否可以尝试使用PathPrefix
而不是Path
作为规则
注意,您的配置中有一个小的输入错误:
[backends]
[backends.pma] # <---
[backends.pma.servers.server1]
url = "http://phpmyadmin:80"
[backends.rabbitmq] # <---
[backends.rabbitmq.servers.server1]
url = "http://rabbitmq:15672"
[frontends]
[frontends.pma]
backend = "pma"
[frontends.pma.routes.test_1]
rule = "Host:pma.example.it"
passHostHeader = true
[frontends.rabbitmq]
backend = "rabbitmq"
[frontends.rabbitmq.routes.test_1]
rule = "Host:pma.example.it;Path:/rabbitmq"
[后端]
[backends.pma]#两个示例中的路径不相等。当您转到pma.example.it/rabbitmq
时,您的rabbitmq实例实际上正在接收rabbitmq:15672/rabbitmq
,并返回未找到对象
错误
您可能希望在前端规则中使用PathPrefixStrip
而不是Path
。它将匹配以/rabbitmq
开头的路径,并在将其传递到后端之前将其剥离
rule = "Host:pma.example.it;PathPrefixStrip:/rabbitmq"
PathPrefixStrip无法工作,因为管理控制台的主页面使用剥离的url加载静态文件,导致响应状态为404。
我遇到了类似的问题,并通过在rabbitmq.conf中设置路径前缀修复了它。在您的情况下,它将是:
management.path\u前缀=/rabbitmq
Traefik的配置保持不变
另请参见我已经尝试了404,我在Firefox开发工具http://pma.example.it/start.js
而不是http://pma.example.it/rabbitmq/start.js
这一行不是必需的,pma.example.it有效,我遵循这些示例无效,同样的错误,现在我为rabbitmq创建一个新域,而不是使用路径