当用户使用较少时,低并发的情况下,使用内部tomacat返回给用户:
但是随着用户的增多,一台服务器无法满足需求
则需要横向扩展,增加服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求(反向代理)。
负载均衡:(内存大的服务器权重给大点,访问请求偏向该服务器)
希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以我们使用了Nginx。
Nginx (engine x) 是一个高性能【响应反应更快和并发强】的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务【邮件服务】
官网下载地址:nginx: download
提供的服务:
正向代理(代理客户端):用户知道目标服务器地址,但由于网络限制等原因,无法直接访问。这时候需要先连接代理服务器,然后再由代理服务器访问目标服务器。
反向代理(代理服务器端):反向代理对用户则是不可知的,比如我们访问百度网站,百度的代理服务器对外的域名为 https://www.baidu.com 。具体内部的服务器节点我们不知道,现实中我们通过访问百度的代理服务器后,代理服务器给我们转发请求到他们N多的服务器节点中的一个给我们进行搜索后将结果返回。
客户端访问一个ip,自动区选取空闲服务器,但是ip地址不变
轮询:可以理解为各个服务器权重都为1,请求依次分配 如下图所示:
加权轮询:加上权重给不同服务器分配不同个数任务,性能好的分配请求处理多点,这样可以保证整体服务器利用资源最大化。
iphash:对客户端请求的ip进行hash操作,然后根据hash结果将同一一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
其中:Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间
核心是对ip分配服务器,实现session的共享,不建议使用【如果对应服务器挂了,则这台服务器的信息也全部丢失了】,一般使用redis
动静分离: 动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如: Css、 html. jpg、js等等文件),这些不需要经过后台处理的 文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来, 动静资源做好了拆分以后,我们就可以根据静态资源的特点将其 做缓存操作。提高资源响应的速度。
链接:nginx: download,选择稳定版本即可
下载解压即可使用
启动nginx:
(1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过
(2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe
,回车即可 推荐:
检查nginx是否启动成功
直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!
配置监听
nginx的配置文件是conf目录下的nginx.conf,默认配置的nginx监听的端口为80,如果80端口被占用可以修改为未被占用的端口即可。
当我们修改了nginx的配置文件nginx.conf 时,不需要关闭nginx后重新启动nginx,只需要执行命令 nginx -s reload
即可让改动生效
关闭nginx
如果使用cmd命令窗口启动nginx, 关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx (1)输入nginx命令
nginx -s stop
(快速停止nginx) 或nginx -s quit
(完整有序的停止nginx) (2)使用taskkilltaskkill /f /t /im nginx.exe
taskkill是用来终止进程的,
/f是强制终止 .
/t终止指定的进程和任何由此启动的子进程。
/im示指定的进程名称 .
解压文件:
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
配置:使用默认配置,在nginx根目录下执行
./configure
make
make install
查找安装路径: whereis nginx
执行nginx程序,
注意:如何连接不上,检查阿里云安全组是否开放端口,或者服务器防火墙是否开放端口! 相关命令:
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程
最终项目配置可参考:狂神大佬相关教程:【狂神说】Nginx最新教程通俗易懂,40分钟搞定!_哔哩哔哩_bilibili
配置文件:
简单可以看成:
性能配置就在全局配置和events中,负载均衡,反向代理就在http中实现;location作用:不同服务器负责不同部分
upstream lb{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=1; 负载均衡
}
location / {
proxy_pass http://lb; 反向代理
}
配置完成后:nginx -s reload 重新加载配置文件
整体流程如下图:
动静分离:
html默认请求80端口,如果想要请求443端口,通过rewrite实现