Nginx 在 Docker 容器构建后无法识别嵌套路由(react-router)

Nginx 在 Docker 容器构建后无法识别嵌套路由(react-router)

我想现在就部署我的项目,但是在运行docker build之后我遇到了一个问题,我使用了带有docker build的nginx服务器

在本地,react-router 运行良好,在开发中在 localhost 中运行时没有遇到任何问题,甚至在正常构建中也是如此

当我用带有 nginx 的 docker 容器服务器只对正常路线起作用,当我导航到嵌套路线时,我的组件根本没有渲染哪些组件依赖于嵌套匹配

我认为 nginx 没有识别index.html位置对象根目录中的嵌套路由器default.conf

这里是default.conf 文件

server {
  listen 3000;
    root   /usr/share/nginx/html;
    index  index.html index.htm;
  location /{
    try_files $uri $uri/ /index.html;
    expires -1; # Set it to different value depending on your standard requirements
  }
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
    root   /usr/share/nginx/html;
  }
}

这里是Dockerfile 文件

FROM node:14-alpine as react-build
# => Build container

WORKDIR /home/node/app

ENV NODE_ENV production

#ENV NODE_OPTIONS --openssl-legacy-provider

COPY package.json /home/node/app
RUN npm install

COPY . /home/node/app
RUN npm run build

# => Run container
FROM nginx:1.15.2-alpine
ENV NODE_ENV production
# Nginx config
RUN rm -rf /etc/nginx/conf.d
COPY conf /etc/nginx

# Static build
COPY --from=react-build /home/node/app/build /usr/share/nginx/html

# Default port exposure
EXPOSE 3000

# Copy .env file and shell script to container
WORKDIR /usr/share/nginx/html
COPY ./env.sh .
COPY .env .
COPY .env.local .

# Add bash
RUN apk add --no-cache bash

# Make our shell script executable
RUN chmod +x env.sh

#Stream Editor CR LF
RUN sed -i -e 's/\r$//' /usr/share/nginx/html/env.sh

# Start Nginx server
CMD ["/bin/bash", "-c", "/usr/share/nginx/html/env.sh && nginx -g \"daemon off;\""]

我问路由器相关的问题堆栈溢出他们说,路由器的实现是否正确

“路由器实现中没有问题,似乎是服务器/处理位置根 index.html 中存在问题”

这是 stackoverflow 相关的问题https://stackoverflow.com/questions/74374786/why-nested-routesreact-router-are-not-working-with-nginix-container-docker-bui

请大家帮帮忙,我不知道 nginx 配置出了什么问题

我如何才能正确访问 index.html 根目录中的嵌套路由

提前致谢!

相关内容