Reactjs 部署反应器&;ExpressJS到Nginx

Reactjs 部署反应器&;ExpressJS到Nginx,reactjs,express,nginx,Reactjs,Express,Nginx,我有一个典型的Ubuntu VPS设置(20.04LTS),在那里我安装了Nginx服务器。 我有两个本地回购,前端是reactJS代码回购,后端是ExpressJS代码回购。 我将使用forever start在3000端口上启动ExpressJS。我还有一个mysql数据库。 我已经将Nginx配置为使用root/var/www/[Your repo name]/build为静态文件提供服务器;我可以打开html文件,它正在工作。 问题是,我是否需要在另一个端口上启动(例如ReactJS n

我有一个典型的Ubuntu VPS设置(20.04LTS),在那里我安装了Nginx服务器。 我有两个本地回购,前端是reactJS代码回购,后端是ExpressJS代码回购。 我将使用forever start在3000端口上启动ExpressJS。我还有一个mysql数据库。 我已经将Nginx配置为使用root/var/www/[Your repo name]/build为静态文件提供服务器;我可以打开html文件,它正在工作。 问题是,我是否需要在另一个端口上启动(例如ReactJS npm run start)或Nginx是否足够?你能帮我提供一些链接或最佳实践吗


提前感谢。

如果您使用的是
CRA
(create react app),它附带了一个构建脚本,因此在运行
npm run build
后,整个应用程序将构建到静态文件中,包括
index.html
和一些
js
css
文件。您所需要做的就是配置
nginx
来提供
index.html
。所以nginx就足够了。如果您在应用程序中使用
react router
,请记住,您可能需要使用nginx的
try\u files
指令为任何传入请求提供
index.html

有关react路由器和nginx的更多信息,请参阅


如果你正在进行
SSR
(服务器端渲染),你需要一个像
pm2
forever
这样的流程管理器来为你的应用程序提供内部服务,并需要nginx的
proxy\u pass
指令来反转对你的应用程序的代理传入请求

当用户打开基本url并作为get调用的响应发送时,所有静态文件(如index.html和资产)都将从“root/var/www/[your repo name]/build”文件夹中提供。在您的代码中,确保将“/api/”附加到来自ui的所有后端请求中,以便将其转发到在端口3030上运行的服务。

Hi。谢谢你的介绍。我想我的开发者正在使用CreateReact应用程序。我已经将nginx配置为server index.html。我不知道如何检查我们是否使用服务器端渲染。我在哪里可以查看它?如果您使用的是裸CRA,而不是SSR,则带有SSR的react应用程序通常构建在
nextjs
gatsby
之上,或者在root directory.Hi中有一个带有
server.js
的自定义SSR引擎。我发现我们使用的是react路由器,所以我在服务器{listen 80 default_server;server_name_35;react app&front-end files location/{root/home/ubuntu/front-end/html;try_files$uri/index.html;}节点api反向代理位置/api/{proxy_-pass;}之前进行了配置我想这应该足够了。谢谢你的快速回复。我在公用文件夹中有html和index.html文件。这应该足够nginx作为起点吗?我的配置。如果你想添加更多信息,请编辑你的问题。您好。是的,我已经将代码附加到/api中。这非常清楚。但是我仍然感到困惑,我应该继续吗带有npm run star的ReactJS前端和带有npm run start的ExpressJS后端的艺术(并添加一些代理)。或者,如果我只运行react.router而不运行nextjs,则不需要这一点(我想我已经看到在前端使用了reactdom包)。通过react npm run start,我看到它启动了自己的开发服务器。在这种情况下,NGINX在生产中的最佳实践是什么?不必在生产环境中运行开发服务器。您需要在生产服务器上构建项目(通过jenkins或手动登录到服务器机器),并且当创建“dist”文件夹时,它具有加载UI页面所需的所有文件。在nginx中,始终在根路径“/”中提供dist文件夹,以便将包含app.min.js和app.min.css链接的index.html提供给请求页面的浏览器。还有一点是,当您运行开发服务器时,它会公开您的源代码电子地图到外部世界,这可能不是一个好的做法。如果您开始提供静态捆绑包,那么转向无服务器体系结构是很方便的。@VIijay122-感谢您的良好解释。您是否有一些关于如何构建ReactJS项目、创建/dist文件夹以及为生产设置所有nginx的链接?可能有一些教程或最佳实践链接与步骤?当然。创建react应用程序可以通过webpack或脚本生成dist文件夹。一旦生成dist,通过nginx配置,dist文件夹将指向根url。有关详细步骤,请参阅下面的链接。