【发布时间】:2019-12-17 03:23:43
【问题描述】:
我正在尝试将 Traefik 设置为一个简单的 Node.js 微服务的反向代理,以便由 Angular 前端调用,该前端将被转换为 javascript、css 和 html 并在 nginx 上运行。现在,我正在尝试让 Node.js 在端口 3000 上进行内部侦听,并且可以从外部 traefik 访问暴露的端点。
我可以访问仪表板和 whoami 示例服务,但不能访问我的 Node.js 微服务中定义的端点。对于与 PathPrefix 匹配的端点,我得到“错误网关”。如果我尝试访问与模式不匹配的端点,我会收到 404“找不到页面”,所以我认为我的 PathPrefix 设置正确,我只是没有设置服务和/或后端配合前端。
在 Traefik 之外调用时,我的微服务运行良好。我已经从 Node.js 脚本中剥离了对证书和 SSL/TLS 的处理,以便 Traefik 可以处理该部分。我非常有信心这部分也能正常工作。
如果您访问“/”,我的 Node.js 会打印“Hello, world”,如果您访问 /v1/api/authorize,则可以执行真正的工作。同样,仅当作为独立的 node.js 应用程序运行时,不作为 docker 服务堆栈中的服务。
我错过了什么?是什么导致“坏网关”错误?我觉得这将是一个简单的解决方案,这似乎是 Traefik 的一个简单的用例。
我使用的是 Node.js 10 和 Traefik 2.1.0。
version: "3.3"
services:
reverse-proxy:
image: "traefik:latest"
command:
- --entrypoints.web.address=:80
- --entrypoints.web-secure.address=:443
- --providers.docker=true
- --api.insecure
- --providers.file.directory=/configuration/
- --providers.file.watch=true
- --log.level=DEBUG
ports:
- "80:80"
- "8080:8080"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "/home/cliffm/dev/traefik/configuration/:/configuration/"
auth-micro-svc:
image: "auth-micro-svc:latest"
labels:
- traefik.port=3000
- "traefik.http.routers.my-app.rule=Path(`/`)"
- "traefik.http.routers.my-app.rule=PathPrefix(`/v1/api/`)"
- "traefik.http.routers.my-app.tls=true"
whoami:
image: containous/whoami:latest
redis:
image: redis:latest
ports:
- "6379:6379"
【问题讨论】:
标签: node.js docker docker-compose traefik