404错误,react客户端试图从nginx反向代理命中nodejs后端,安装程序用于docker compose

kuhbmx9i  于 2024-01-06  发布在  Nginx
关注(0)|答案(1)|浏览(299)

在我目前的设置中,当客户端从后端API请求任何东西时,浏览器控制台中会出现404错误状态:parsing_error,这是在localhost:3000/login登录尝试时发生的。我倾向于在nginx.conf中的位置块中解决问题,但在这一点上不确定,我已经尝试了许多不同的调整,但最终还是出现了其他错误。我在这个设置中缺少了什么?

nginx.conf

  1. upstream loadbalancer {
  2. least_conn;
  3. server ws1:8081;
  4. server ws2:8082;
  5. server ws3:8083;
  6. }
  7. server {
  8. listen 80;
  9. server_name localhost;
  10. location / {
  11. root /usr/share/nginx/html;
  12. index index.html index.htm;
  13. try_files $uri $uri/ /index.html;
  14. }
  15. location /api/ {
  16. proxy_pass http://loadbalancer/;
  17. proxy_buffering on;
  18. }
  19. }

字符串

docker-compose.yml

  1. services:
  2. ws1:
  3. image: bark-mate-be
  4. environment:
  5. - APPID=1111
  6. - APPPORT=8081
  7. networks:
  8. - loadbalancing
  9. ports:
  10. - "8081"
  11. ws2:
  12. image: bark-mate-be
  13. environment:
  14. - APPID=2222
  15. - APPPORT=8082
  16. ports:
  17. - "8082"
  18. networks:
  19. - loadbalancing
  20. ws3:
  21. image: bark-mate-be
  22. environment:
  23. - APPID=3333
  24. - APPPORT=8083
  25. ports:
  26. - "8083"
  27. networks:
  28. - loadbalancing
  29. barkmatefrontend:
  30. image: bark-mate-fe
  31. ports:
  32. - "3000:80"
  33. networks:
  34. - loadbalancing
  35. depends_on:
  36. - db
  37. - ws1
  38. - ws2
  39. - ws3
  40. db:
  41. volumes:
  42. - barkMate_db:/data/db
  43. image: mongo:latest
  44. ports:
  45. - "27017:27017"
  46. volumes:
  47. barkMate_db:
  48. networks:
  49. loadbalancing:

Dockerfile-client

  1. FROM node:current-alpine as build
  2. WORKDIR /app
  3. COPY package*.json /app/
  4. RUN npm install
  5. RUN npm ci --production
  6. COPY . .
  7. RUN npm run build
  8. FROM nginx:alpine-slim
  9. COPY --from=build /app/build/ /usr/share/nginx/html
  10. COPY --from=build /app/nginx/nginx.conf /etc/nginx/conf.d/default.conf

Dockerfile服务器

  1. FROM node:16
  2. RUN mkdir -p /app
  3. WORKDIR /app
  4. COPY package*.json ./
  5. RUN npm install --silent
  6. COPY . .
  7. EXPOSE 8080
  8. CMD ["node", "server.js"]

3gtaxfhh

3gtaxfhh1#

我已经修复了错误,由于前端映像构建时间,此设置很难测试。对于每个Web服务器映像ie(ws 1,ws 2...)端口在docker-compose. yml中Map不正确。例如,之前是

  1. ws1:
  2. image: bark-mate-be
  3. environment:
  4. - APPID=1111
  5. - APPPORT=8081
  6. networks:
  7. - loadbalancing
  8. ports:
  9. - "8081"

字符串
现在是

  1. ws1:
  2. image: bark-mate-be
  3. environment:
  4. - APPID=1111
  5. - APPPORT=8081
  6. networks:
  7. - loadbalancing
  8. ports:
  9. - "8081:8080"


因此,将外部容器端口从内部容器8080Map到8081,内部容器8080暴露在每个Web服务器使用的bark-mate-be映像中。我还删除了proxy_pass URL的尾随正斜杠,不确定这是否有区别,但它可能在我之前的尝试中抛出了一个误导性错误。

展开查看全部

相关问题