Nginx服务器初学习 ,将之前写的前后端分离案例搭建到Nginx上

Posted 小智RE0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx服务器初学习 ,将之前写的前后端分离案例搭建到Nginx上相关的知识,希望对你有一定的参考价值。

1.nginx服务器初学习

Nginx 服务器: 并发高性能的 Web静态资源服务器 和 反向代理,负载均衡,动静分离 以及 IMAP/POP3/SMTP 代理服务器

  • 占有内存少,并发能力强;百度、京东、新浪、网易、腾讯、淘宝等都有用到nginx.

  • 这款服务器专为性能优化而开发,而性能是服务器最重要的考量,能经受高负载的考验,据报告能支持高达 50,000 个并发连接数。

  • Nginx服务器 不仅可实现反向代理负载均衡;还能可以作正向代理来实现上网功能。

  • 可加快网站的解析速度,减少服务器压力,加快解析速度。

下载网址http://nginx.org/en/download.html

关于代理服务器:

发起请求的客户端原始服务器端之间的一个中介服务器,正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。

正向代理和反向代理理解

正向代理

用户已知目标服务器地址,
由于网络限制等原因,无法直接访问目标服务器。
需要先连接代理服务器,由代理服务器访问目标服务器

正向代理可以隐藏客户端;
服务器仅知道请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽/隐藏真实客户端信息

相当于不同的用户去访问汽车4S店

反向代理

反向代理对用户则是不可知的,反向代理隐藏了服务器的信息.

比如我们访问百度网站,百度的代理服务器对外的域名为 www.www.baidu.com ,用户不知道具体内部的服务器节点,实际上通过访问百度的代理服务器后,代理服务器会转发请求到 后台,找到其中一个服务器节点。

相当于你去4S店买车;但是你并不知道4S店联系了后面的哪些和合作厂家;但是最后4S能给你调到合适的车.

负载均衡

客户端发送多个请求到服务器,服务器处理请求,服务器处理请求后将结果返回客户端。

当请求并发量过大的时候;需要搭建服务器集群,增加服务器数量,
将原先请求单个服务器的情况改将请求分发到多个服务器上,将负载分发到多个服务器上.

负载均衡处理方法:

  • (1)轮询 调度:按时间顺序逐一分配到不同的后端服务器。
  • (2)加权轮询:配置 server 后面加个 weight=number,number 值越高,分配的概率越大。
  • (3)ip_hash :(IP哈希算法):对于每个请求,按访问 IP 的 进行hash 分配,来自同一 IP 的请求就固定访问一个固定的后台服务器。
  • (4)least_hash( 最少连接哈希算法): 哪个服务器的链接数少就发分发给哪个服务器。


基本使用

下载网址http://nginx.org/en/download.html

命令:

  • 启动nginx服务器 nginx
  • 刷新配置 nginx -s reload
  • 停止服务 nginx -s quit 或者 nginx -s stop

可以看一下这个放置前端页面的文件夹;有默认的文件

点击index.html;可看到内容

在当前安装目录输入 cmd命令

输入命令nginx,回车即可;

启动成功
浏览器页面访问http://127.0.0.1:80地址

在cmd命令窗口输入命令nginx -s quit 或者 nginx -s stop 即可停止服务

配置文件说明

  • 全局块:配置影响 nginx 全局的指令。一般有运行 nginx 服务器的用户组,
    nginx 进程 pid 存放路径,日志存放路径,配置文件引入,允许生成 worker pr
    ocess 数等。
  • events 块:配置影响 nginx 服务器或与用户的网络连接。有每个进程的最大
    连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,
    开启多个网络连接序列化等。
  • http 块:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能
    和第三方模块的配置。如文件引入,mime-type 定义,日志自定义,是否使用 s
    endfile 传输文件,连接超时时间,单连接请求数等。
  • server 块:配置虚拟主机的相关参数,一个 http 中可以有多个 server。
  • location 块:配置请求的路由,以及各种页面的处理情况。

2.将上次的案例搭建上去

将之前的管理员权限分配;然后对管理员进行增删改查操作处理的前后端分离案例;部署到nginx服务器上;

前端

首先要把端口问题都处理一下

找到写的前端文件 main.js

由于之前是在本地运行的,所以这个路径就固定了;
但是这次搭建到nginx之后,我会配置两个后端端口;这时若固定就有问题了;只能访问到固定的端口5277;

当然,后面这些异步请求的地址也都全部需要修改,加上前置路径/api/;

所有的请求都这样修改一下;

然后再去打包前端代码;

在HubildX的终端命令台中;对当前文件npm run build;

将打包后的文件全部放到nginx安装包的前端页面位置;

后端

首先在IDEA里面打包后端代码;

比如我打包一个端口为 5277

使用maven的打包命令;得到打包后的后端代码文件

复制出来,放到一个文件夹

同样地再打包一个端口为8888的


这时还需要在nginx的配置文件中,配置后端端口;
以及访问后端端口的规则;


配置后端服务地址;以及我这个项目访问/api/接口路径的读取配置;

注意:我这里的端口5277和8888就是上面打包后端代码时的端口;
然后这个weight就是权重优先级;由于nginx的负载均衡调度算法中有加权轮询规则;即weight大的收到请求的概率高;

upstream mytomcat
        server localhost:5277 weight=1;
        server localhost:8888 weight=1;


#代理服务器地址;
location /api/  
   proxy_pass http://mytomcat;
 

启动,访问测试

cmd命令窗口启动后端代码服务
java -jar startspringboot-xiaozhi-5277.jar

java -jar startspringboot-xiaozhi-8888.jar

启动两个窗口

这时,在nginx安装的位置处;
使用cmd命令;先刷新一下服务器配置nginx -s reload

再去启动nginx

启动存放管理员头像图片的服务器

浏览器访问http://127.0.0.1/#/login;部署成功

注意请求的路径这里就会隐藏后端服务的端口;
而两个后端服务器;根据调度算法的规则;来接收请求;

部署完成

以上是关于Nginx服务器初学习 ,将之前写的前后端分离案例搭建到Nginx上的主要内容,如果未能解决你的问题,请参考以下文章

前后端分离学习笔记 --[权限分配案例]

前后端分离学习笔记 --[管理员权限分配操作菜单案例]

关于前后端分离

SpringBoot 2.x 开发案例之前后端分离鉴权

nginx 初了解

前后端分离学习笔记 ---[Vue基础]