我有一台小型服务器,在其中使用Traefik在服务器外部公开一些服务。就像API和我的管道一样。那里的一切都很好,没有问题。
但是,我也试图创建一个很小的网页,由于某种原因,Traefik无法将前端路由到后端。它显示在Traefik仪表板中,但是访问网页仅返回“找不到网页”。
该网页只是我使用nginx构建并运行的简单React。该服务器与通过Traefik提供的其他服务在同一个docker网络上运行,如果我从服务器本地卷曲它,则可以获得预期的数据。
奇怪的是,完全相同的配置在其他系统(没有Traefik配置,其他负载均衡器)中也能完美地工作。
我的Dockerfile:
FROM node:12.18.3-alpine as build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# production environment
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
COPY /nginx.conf /etc/nginx/conf.d/default.conf
LABEL traefik.enable="true"
LABEL traefik.docker.network="web"
LABEL traefik.backend="backend-name"
LABEL traefik.port="80"
LABEL traefik.frontend.rule="Host:subdomain.main.domain"
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
还有我的nginx.conf:
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ $uri.html /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
我肯定我缺少一些简单的东西,但是我认为我是盲目的,如果有人可以指出我的错误,我将不胜感激。