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上的主要内容,如果未能解决你的问题,请参考以下文章