【问题标题】:Is there way to run React app in nginx(Docker, nginx knowledge required)有没有办法在 nginx 中运行 React 应用程序(Docker,需要 nginx 知识)
【发布时间】:2020-02-16 10:35:36
【问题描述】:

我有 react app 和 nodejs api 服务器。 React 应用程序向 nodejs 服务器发出 fetch 请求。 React 应用和 nodejs 服务器部署在自己的容器中。

问题是我可以直接在浏览器中访问nodejs服务器,所以有没有办法“隐藏”nodejs后端服务器,只允许通过前端访问。

它应该像这样工作

  1. React 应用发出 fetch 请求
  2. nginx拦截请求并转发到nodejs服务器
  3. nodejs 处理请求

我认为可以使用 nginx 反向代理或 docker 网络或以某种方式完成...

【问题讨论】:

  • 您希望通过这样做来实现什么?不管你添加了多少层间接,如果用户浏览器中的 React 应用最终可以访问 nodejs 服务器,那么用户想要的任何其他东西也可以。
  • 拥有一个为构建的前端应用程序提供服务并代理后端服务器的 nginx 是非常常规的。您是否遇到了具体问题?

标签: node.js reactjs docker


【解决方案1】:

是的,有。你要做的是运行一个运行 3 个 docker 容器的 docker-compose。第一个容器运行 nginx,第二个运行 create-react-app host ui,第三个运行 node js api。然后,您将所有 /api/* 路由的 nginx 路由规则设置为反向代理到 nodejs api,然后确保所有其他 get 请求 /* 转到托管的 create-react-app。

这是一个类似的媒体示例:https://medium.com/@xiaolishen/develop-in-docker-a-node-backend-and-a-react-front-end-talking-to-each-other-5c522156f634

【讨论】:

  • 这不是我想要的,但我认为这是我能做到的最好的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-24
  • 2012-04-17
相关资源
最近更新 更多