出于某种原因,我无法让它发挥作用。我正在尝试将/api 转发到 API 容器。
我得到的错误:
纽斯特 | [6:11:03 PM] 错误:连接 ECONNREFUSED 127.0.0.1:80
纽斯特 |在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1083:14)
我认为/api 被重定向到 127.0.0.1:80 但我不知道为什么?
Traefik 仪表板:
https://imgur.com/mqTXE9F
nuxt.config.js
...
axios: {
baseURL: '/api'
},
server: {
proxyTable: {
'/api': {
target: 'http://localhost:1337',
changeOrigin: true,
pathRewrite: {
"^/api": ""
}
}
}
},
...
docker-compose.yml
version: '3'
services:
reverse-proxy:
image: traefik
command: --api --docker
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- mynet
nuxt:
# build: ./app/
image: "registry.gitlab.com/username/package:latest"
container_name: nuxt
restart: always
ports:
- "3000:3000"
command:
"npm run start"
networks:
- mynet
labels:
- "traefik.backend=nuxt"
- "traefik.frontend.rule=PathPrefixStrip:/"
- "traefik.docker.network=mynet"
- "traefik.port=3000"
api:
build: .
image: strapi/strapi
container_name: api
environment:
- APP_NAME=strapi-app
- DATABASE_CLIENT=mongo
- DATABASE_HOST=db
- DATABASE_PORT=27017
- DATABASE_NAME=strapi
- DATABASE_USERNAME=
- DATABASE_PASSWORD=
- DATABASE_SSL=false
- DATABASE_AUTHENTICATION_DATABASE=strapi
- HOST=api
- NODE_ENV=development
ports:
- 1337:1337
volumes:
- ./strapi-app:/usr/src/api/strapi-app
#- /usr/src/api/strapi-app/node_modules
depends_on:
- db
restart: always
networks:
- mynet
labels:
- "traefik.backend=api"
- "traefik.docker.network=mynet"
- "traefik.frontend.rule=PathPrefixStrip:/api"
- "traefik.port=1337"
db:
image: mongo
environment:
- MONGO_INITDB_DATABASE=strapi
ports:
- 27017:27017
volumes:
- ./db:/data/db
restart: always
networks:
- mynet
networks:
mynet:
external: true
最佳答案
我知道这有点晚了,但是您应该从 webpack-dev-server 中删除代理,而是使用 api 服务上的标签设置正确的规则。
所以如果你使用 Traefik v2,你的 nuxt 服务上的标签应该是
labels:
- "traefik.http.routers.nuxt.rule=Host(`myhost`)"
那么你的 api 上的标签应该是labels:
- "traefik.http.routers.api.rule=Host(`myhost`) && PathPrefix(`/api`)"
关于docker - 我的 Nuxt/Docker/Traefik 配置可能有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55108422/