node.js - Nodejs:如何将子域重定向到端口?
问题描述
我正在创建一个以 API 作为后端的全栈网络应用程序,并将其托管在DigitalOcean服务器上。
前端(reactjs)在一个端口(3000)上运行,后端(快速服务器-RESTFul API-)在另一个端口(3001)上运行。
我希望能够从一个域与他们两个进行通信。
前任 :
- https://example.com/ => 重定向到前端
- https://example.com/a-specific-page => 重定向到前端的特定页面
- https://api.example.com/ => 重定向到后端 API
- https://api.example.com/login => 重定向到 API 的登录部分
我怎样才能做到这一点 ?
我已经尝试了一些事情:
- 从我的提供商(ovh.com)重定向子域=>这不是方式
- 在端口 80 上的根目录创建第三个 nodejs 服务器并手动重定向,但我认为这不是一个好方法,因为我必须考虑域名的所有可能性(www.mydomain.com / mydomain.com / http:/ 等...) 并同时用于一起运行
我真的不想把前端和后端放在同一个运行的服务器(同一个端口)
我在掌握服务器方面很新,所以我什么都不知道,对不起。
谢谢您的帮助。
PS:我是法国人,很抱歉英语不好:)
解决方案
你好,因为我没有那么多信息,所以我会保持一般。你想要的是一个反向代理。您可以使用 http-proxy-middleware:https://www.npmjs.com/package/http-proxy-middleware。
假设您在 http://example.com:3000 上运行前端,在http://example.com:3001上运行后端。
现在假设您希望http://example.com:3001/42-is-the-answer指向http://example.com:3000(您可以根据需要添加路径)。
唯一要做的就是在 example.com:3001 的服务器实例上使用代理,如下所示:
const proxy = require("http-proxy-middleware");
const app = express();
....
app.use( proxy("/42-is-the-answer", {
target: "http://example.com:3000/"
}))
现在,如果您访问http://example.com:3001/42-is-the-answer,请求将被代理到http://example.com:3000。
我希望这有帮助。
推荐阅读
- c# - 统一更改粒子系统开始颜色的范围
- css - 如何在 Bootstrap 中裁剪 GoogleAPI 二维码图像?
- r - ggplot 多边形 X 轴和 Y 轴缩放并更改组的颜色
- php - Codeigniter 中的 Ajax 文件上传
- java - 没有为 public com.phonepe.gandalf.models.authz.Permission 类型的参数找到注入源
- angular - 构建 Angular CLI 主题
- reactjs - 如何使用 bundle.js 文件渲染 react-router-dom 中的组件?
- excel - 如何使用 do-while 循环取多个数据数组的平均值
- javascript - 为什么javascript警报功能不起作用?
- javascript - 在 Three.js 中将网格隐藏在透明网格后面