前后端分离那些事

问题:我们打包的dist文件夹和Index.html后,需要后端怎么配合,我们才能在线上域名成功访问?

一、将dist包和后端代码丢在一起。如tomcat。

我们将dist包和后端的jar包放在一起,由后端部署到对应的服务器。

开发环境

在webpack的dev-server中代理发送接口

相当于请求 http://10.180.221.199:8090/api

后端

测试生产环境

我们的前后端代码部署在一个服务器上面,就是直接请求https://test-project.pingan.com这样的了。

普通的,tomcat将index和dist放在src下面,后端配置路由,进行返回。后端配置路由主要有两种:

1.api(前后端约定好的字符)作为前缀,当判断到前端的请求是api开头,则表示用于接口的请求,后端跳转到对应的class做各种逻辑处理。

2.除了api外,所有的请求,我们在前端router中设置的路由(/、/home、/login等)我们只需要后端返回index.html,index.html会根据需要去引入对应的js css文件等,之后我们在页面路由的点击的页面跳转,自然走的是前端配置的router。

二、前后端完全分离,我们将dist放在node或者nginx启动一个服务器上.

前端和后端拥有两个不同的服务器,我们将node代码和dist包放在前端部署的服务器上,由node启动一个服务,由node给我们发送接口和返回返回index.html页面。后端服务器是用来给我们提供接口访问的。

类似于上面的,我们可以会在Node上设置一个通用的api前缀作为接口,可以在node通过http发送接口请求,也可以直接用一个代理转发接口请求。其他非api的我们可以返回Index页面即可。

NetWork:

node

比较

两者的优缺点显而易见,用tomcat如果有新的dist包,每次都需要后端进行项目的重启,加大了合作成本。所以前后端完全分离的方式是更理想的,可以做到互不影响,自然效率更高。

前后端完全分离,相互独立,减少合作成本

可以在Node上,配置错误日志,修改后端接口返回的数据格式,catch error,请求参数校验等

简言之,其实node和nginx最简单的一个目的就是为了将index.html返回。node可以做的事情,nginx也可以做。

nginx进行配置

申请了一个云服务器,CentOS7,我们用root用户进行登录(当然,也可以下载一个secureFX可视化操作。)

官网上提供了安装nginx的方法

利用nginx -v测试是否安装成功。切换到nginx文件夹下面

有两个我们必须知道的文件conf.d(文件夹,里面配置各种虚拟主机)和nginx.conf(nginx的基本配置)

nginx.conf 文件是Nginx总配置文件,在我们搭建服务器时经常调整的文件。

进入conf.d目录,然后使用vim default.conf进行查看。

一些实用的命令组合

配置errorpage

简单配置禁止访问

注意有个坑,现在是所有的都不能访问

要学会使用正则进行配置,例如以php结尾的就不能访问了。

虚拟主机

虚拟主机是一台物理主机服务器划分的多个磁盘空间,可以理解就是一台独立的服务器。

我们配置一个新的port虚拟主机

这里的server_name可以配置成ip和域名等。

反向代理

理解一下正向代理,vpn就是一个例子,我们想访问国外某网站,需要通过代理服务器去请求。

方向代理

反向代理其实就是真实服务器不能直接被外部网络访问到,需要一台代理服务器,代理服务器和真实服务器是在一个网络中的,

反向代理跟代理正好相反(需要说明的是,现在基本所有的大型网站的页面都是用了反向代理),客户端发送的请求,想要访问server服务器上的内容。发送的内容被发送到代理服务器上,这个代理服务器再把请求发送到自己设置好的内部服务器上,而用户真实想获得的内容就在这些设置好的服务器上

反向代理的用途和好处

安全性:正向代理的客户端能够在隐藏自身信息的同时访问任意网站,这个给网络安全代理了极大的威胁。因此,我们必须把服务器保护起来,使用反向代理客户端用户只能通过外来网来访问代理服务器,并且用户并不知道自己访问的真实服务器是那一台,可以很好的提供安全保护。

功能性:反向代理的主要用途是为多个服务器提供负债均衡、缓存等功能。负载均衡就是一个网站的内容被部署在若干服务器上,可以把这些机子看成一个集群,那Nginx可以将接收到的客户端请求“均匀地”分配到这个集群中所有的服务器上,从而实现服务器压力的平均分配,也叫负载均衡。

我们需要通过访问a.com,反向代理到b.com,等同于访问a.com其实是访问到了b.com

pc和移动端的适配 $http_user_agent

负载均衡

负载均衡:就是分摊到多个操作单元上执行。如果某个服务器down了,就会自动从服务器中移除

权重

适用于服务器性能不同的服务器

ip_hash

存在一个问题,比如说我们Login的session,如果访问了一个机器,但是连接另外一个机器是没有的,那就要重新登录了,可以用id_hash保持一直连接一个机器

fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

gzip压缩

gzip有一个原理,浏览器先告诉服务器是否支持gzip,如果支持,服务器就是以gzip进行压缩。一般可以压缩至原来的30%

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190406A003GD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券