node.js - 你可以使用 react 服务器将你的请求转发到后端吗?

标签 node.js reactjs docker frontend backend

我正在开发一个工具,其中前端是用react js(create-react-app并使用 serve 提供服务)制作的,后端是用express+node制作的,并且两个服务器都在远程计算机上的不同Docker容器上运行。现在的问题是系统管理员说他只会让前端可以从外部访问,而后端容器只能由前端容器访问。由于我在/API/example 上调用 XMLHttpRequest 并且后端没有公共(public) URL,因此我可以使用前端服务器将我的请求重定向到后端吗?

为了让我自己清楚,这就是我想要做的,前端在 https://frontend.com 上运行,我从浏览器到 https://frontend.com/API/example 进行 API/example 调用,服务器会将此调用重定向到后端并回复响应。

最佳答案

您应该使用某种网络服务器而不是 serve npm 包。您的情况的问题是您希望将所有请求代理到后端,并且服务包只是一个静态服务器。对您来说最简单的方法是编写自定义 Node js 脚本,提供静态 Assets (例如使用 express )并将所有请求代理到后端。 (例如 express-http-proxy )。

示例代码如下所示:

const proxy = require('express-http-proxy');
const app = require('express')();  
app.use('/api', proxy('http://backend.url')); // this will proxy all incoming requests to /api route to backend base url
app.use(express.static(‘path/to/your/static/assets’)); // these were previously served with serve
app.listen(3000, () => console.log(‘Frontend listening on port: 3000’));

另一种可能的方法是使用 nginx、apache 或任何您想要的网络服务器,并且执行基本相同的操作。

关于node.js - 你可以使用 react 服务器将你的请求转发到后端吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725198/

相关文章:

docker - 与其他任何主机操作系统相比,作为Docker主机的CentOS导致不同的容器行为

node.js - 使用 Express 服务器设置 ssl

javascript - 调试 http3 设置

reactjs - 在 Sass 和 CSS 模块中使用全局父选择器

javascript - 检查数组元素的字符串并系统地用 HTML 标签替换它们 - (JS, ReactJS)

caching - 使用 docker/host 卷时如何保留 apt-cache 归档目录

javascript - 将文件中的对象属性随机分配给 inline-css

node.js - 序列化时间戳名称

reactjs - 如何使用react-table对数据进行自动换行?

Docker:容器与本地安装