【问题标题】:Nodejs : how to redirect subdomains to ports?Nodejs:如何将子域重定向到端口?
【发布时间】:2019-09-10 22:17:23
【问题描述】:

我正在创建一个以 API 作为后端的全栈网络应用,并将其托管在 DigitalOcean 服务器上。

前端 (reactjs) 在一个端口 (3000) 上运行,后端 (express server -RESTFul API-) 在另一个 (3001) 上运行。

我希望能够从一个域中与他们两个进行通信。

例如:

我该怎么做?

我已经尝试了一些东西:

  • 从我的提供商 (ovh.com) 重定向子域 => 这不是方式
  • 在root 80端口上创建第三个nodejs服务器并手动重定向,但我认为这不是一个好方法,因为我必须考虑域名的所有可能性(www.mydomain.com / mydomain.com / http :/ etc...) 并使用concurrently 一起运行

我真的不想把前端和后端放在同一个运行的服务器(同一个端口)

我是服务器新手,所以我什么都不懂,抱歉。

感谢您的帮助。

PS:我是法国人,很抱歉英语不好:)

【问题讨论】:

    标签: node.js reactjs express frontend backend


    【解决方案1】:

    您好,因为我没有太多信息,所以我会保持一般性。 你想要的是一个反向代理。您可以使用 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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-17
      • 2014-07-02
      • 2016-03-21
      • 2020-02-23
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多