Reactjs 部署反应器&;ExpressJS到Nginx
我有一个典型的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是否足够?你能帮我提供一些链接或最佳实践吗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
提前感谢。如果您使用的是
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。有关详细步骤,请参阅下面的链接。