如何将前端项目与后端项目部署到服务器上进行通信

本文主要是介绍前后端项目部署到服务器后,用户访问浏览器时,前后端如何运行的整个流程,前端以React为例,后端以SpringBoot为例
本文部分内容手打,存在问题的地方请各位指正。

通常需要遵循以下步骤:

  1. 构建React项目
  2. 部署React项目
  3. 构建Spring Boot项目
  4. 部署Spring Boot项目
  5. 解决跨域问题
  6. 前后端交互
  7. 用户访问

一、构建React项目

前端项目采用React框架为例,常见的React项目一般使用npm run build或yarn build命令来构建项目(Windows下使用cmd命令提示符:对应的项目的目录下使用),构建完成后会生成一个build文件夹或者dist文件夹,这个目录下就是生成优化后的项目的打包的静态文件(如HTML、CSS、JavaScript等)。

二、部署React项目

将构建后的静态文件部署到Web服务器上,如Nginx或Apache。这些服务器负责提供静态文件服务,确保用户能够通过浏览器访问到React应用的页面。

Web服务器,也称为网站服务器,是指驻留于因特网上某种类型计算机的程序。这些程序可以处理来自浏览器等Web客户端的请求,并返回相应的响应。Web服务器的作用主要是提供网上信息浏览服务,响应终端的服务请求,并进行处理。同时,它还具有存储的功能,可以存储大量的信息,供用户访问和下载。

Web服务器的主要功能包括:

1)响应并处理终端的服务请求:
用户通过Web浏览器或其他HTTP客户端发送请求时,Web服务器会接收并解析这些请求,然后根据请求的内容和相关配置执行相应的操作,如从文件系统中获取请求的文件、执行动态脚本、处理数据库请求等。
2)存储功能:
Web服务器通常具有充足的存储空间,可以存储大量的信息,包括网页、图像、CSS和JavaScript文件等,供用户访问和下载。

常见的Web服务器软件有以下几种:

Apache HTTP Server:Apache是目前最流行的Web服务器之一,具有跨平台、高可靠性、高性能、模块化设计、开源等优势。它支持各种操作系统,包括Windows、Linux和Mac等,广泛应用于各类网站的开发和部署。

Nginx:Nginx是一款轻量级的Web服务器,具有高性能、高并发、低内存消耗、可扩展性好等优势。它特别适用于处理高流量的网站,如大型门户网站、电子商务网站等。
配置Web服务器以提供静态文件服务,并确保能够正确响应React应用的路由请求。

三、构建Spring Boot项目

使用Maven或Gradle构建Spring Boot项目,并生成可执行的JAR或WAR文件。确保Spring Boot应用中的API端点与React前端代码中定义的请求路径相匹配。

四、部署Spring Boot项目

将生成的JAR或WAR文件部署到应用服务器上,如Tomcat、Jetty或直接在服务器上运行JAR文件。配置服务器以运行Spring Boot应用,并确保应用的端口(默认为8080)是开放的。

Tomcat:Tomcat是一款用于Java应用程序的Web服务器,具有跨平台、开源、易于扩展等优势。它主要用于Java Web应用程序的开发和部署,如Servlet、JSP等。

五、解决跨域问题

在React与Spring Boot项目之间的前后端交互中可能会遇到跨域问题,跨域问题为什么会出现?

如果React应用运行在端口3000上,而Spring Boot后端服务运行在端口8080上,那么直接从React应用发送Ajax请求到Spring Boot后端就会遇到跨域问题。

总的来说:跨域指的是在一个域名下的网页去请求另一个域名下的资源时,由于浏览器的同源策略限制,导致请求被阻止。

有多种办法解决,以下是其中两种:

1)部署在同一域名和端口下:
如果可能的话,将前端和后端的项目部署在同一个域名和端口下。这是最直接的解决方式,因为同源策略(Same-Origin Policy)不会阻止同一域名和端口下的请求。

2)在Spring Boot后端配置CORS(跨来源资源共享):
在Spring Boot后端中配置CORS允许来自React应用的请求访问。可以通过在Spring Boot的配置类中添加CORS相关的注解或配置实现。
例如,可以使用@CrossOrigin注解在Controller层允许跨域请求,或者使用WebMvcConfigurer接口自定义CORS配置。

3)使用代理服务器:
在开发阶段,可以通过配置代理服务器来解决跨域问题。代理服务器可以接收React应用的请求,并转发给Spring Boot后端,然后将响应返回给React应用。这样,React应用的请求和响应都通过代理服务器进行,避免了浏览器的同源策略限制。在Webpack的开发服务器中,可以通过配置proxy字段来实现代理。

六、前后端交互

当React应用需要发送API请求时,它会通过配置的API端点向后端Spring Boot应用发送请求。Spring Boot应用会处理这些请求,并返回相应的数据。

七、用户访问

当用户通过浏览器访问React应用时,Web服务器会提供静态文件,并根据前端路由规则处理页面导航。
当React应用需要发送API请求时,它会向配置的API端点发送请求与后端应用进行通信,这些请求会由Spring Boot应用处理并返回数据。

八、用户访问的整个流程

[用户浏览器] (用户访问)
	|  
	V  
[Web服务器 (如Nginx)] 
	|   
    |  (静态文件服务)  
    |  (API请求代理) 
    V  
[React应用 (静态文件)] 
	| 
    |  (前端路由处理)  
	|  (API请求) 
    V  
[Spring Boot应用] 
 	| 
    |  (处理API请求)  
    |  (返回数据) 
    V   
[Web服务器]  
    |  
    V  
[用户浏览器] (显示数据)
  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端项目放到Nginx中需要进行以下步骤: 1. 安装Nginx:首先,确保已经安装了Nginx服务器。可以通过在终端中运行命令进行安装。例如,在Ubuntu上可以使用以下命令进行安装:sudo apt-get install nginx 。 2. 配置Nginx:配置Nginx以将前端项目部署服务器上。通过编辑Nginx的配置文件来完成此操作。配置文件的位置可能因操作系统而异,通常在/etc/nginx/nginx.conf或/etc/nginx/sites-available/default。打开配置文件,并根据需要进行修改。其中一些常见的配置包括指定前端项目的根目录、监听的端口号等。确保保存配置文件并重新加载Nginx以使更改生效。在终端中运行sudo systemctl reload nginx命令来重新加载配置文件 。 3. 打包前端项目:将前端项目打包为静态文件,以便可以被Nginx服务器提供。根据前端项目使用的框架和构建工具的不同,打包的方法也会有所不同。例如,对于React项目,可以使用npm run build命令将项目打包为静态文件。 4. 将打包后的前端项目放置在Nginx的静态文件目录中:找到Nginx配置文件中指定的静态文件目录,通常是在配置文件中指定的root指令后的路径。将打包后的前端项目文件复制到该目录中。确保文件权限正确设置并具有适当的访问权限。 5. 重新启动Nginx:在完成上述步骤后,重新启动Nginx以使前端项目生效。在终端中运行sudo systemctl restart nginx命令来重新启动Nginx 。现在,您的前端项目应该已经成功地部署在Nginx服务器上了。 请注意,上述步骤仅适用于将前端项目作为静态文件部署到Nginx服务器上。如果您的前端项目需要与后端API进行通信,还需要相应地配置Nginx以将请求转发给后端服务器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [前端开发者必备:Nginx部署前端项目,让你的Web应用快速、稳定、安全地运行](https://blog.csdn.net/qq_42216791/article/details/129945606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值