【问题标题】:How to deploy React.js with Node backend in IIS?如何在 IIS 中使用 Node 后端部署 React.js?
【发布时间】:2020-07-06 21:08:24
【问题描述】:

我有一个使用 Create React App 构建的应用程序,我想使用 Node.js 作为后端从数据库加载数据。基本上,我希望 Node 加载数据,然后使用 Create React App 来处理它。为此,我使用了本教程:https://www.freecodecamp.org/news/how-to-make-create-react-app-work-with-a-node-backend-api-7c5c48acb1b0/。我已经建立了一个工作开发环境,其中我有一个客户端文件夹中的所有 Create React App、一个加载数据的 server.js(如果相关,来自 MS SQL Server),以及一个在 client/package.json 中设置的代理( CRA 的 package.json)用于节点应用程序正在运行的端口(在我的情况下为 5000)。然后我运行 yarn dev,这两个服务器一起运行并相互通信,一切正常。

问题在于部署。我的组织使用 IIS。据我所知,Node 和 IIS 并不是理想的组合,但 IIS 是我们用于一切的工具。我希望 server.js 和 CRA 位于同一个文件夹中,并且基本上尽可能像一个应用程序一样运行(我知道 Node 需要运行自己的服务器)。我还想要一个可以轻松更改或移动到另一台机器的设置。到目前为止我所做的是:

  1. 使用客户端文件夹设置单个应用程序,这是 CRA 的构建,然后是根目录中的 server.js
  2. 在我的反应代码中,对 http://localhost:5000 进行了 API 调用(在开发环境中我可以执行 fetch('api/somestuff') 但要使其在生产中工作,我需要执行 fetch('http ://localhost:5000/api/somestuff'))
  3. 安装了 pm2 并用它来运行 server.js 并启动 Node 服务器

这行得通,但是我想知道这是否是做事的最佳方式。这在我的本地机器上工作,但我不知道当我把它放在我们的生产机器上会发生什么。 Node 服务器会阻塞其他应用程序吗?无论如何它会继续运行还是会崩溃?最终,这将部署在多服务器环境中,我们有 2 台负载均衡的服务器,它们具有相同的代码,通过 F5 形成一个单一的 URL——这会影响什么吗?

我对编程很陌生,所以请耐心等待,如果这个问题的措辞令人困惑,我很抱歉。

【问题讨论】:

标签: node.js reactjs iis


【解决方案1】:

我建议您安装 ARR 以与 IIS 一起作为反向代理,它可以将 HTTP 请求转发到后端 NodeJS 服务器。
另外,对于rewrite action类型的跨域请求转发,我们需要安装Application Request Routing,并开启代理功能。

这里有两个应用这个特性的例子,请查看。
How to successfully run node server with IIS?
ASP.net URL Rewrite subdirectory to external URL
如果有什么我可以帮忙的,请随时告诉我。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2019-05-08
    • 2018-11-09
    相关资源
    最近更新 更多