笔记根据遇见狂神说
0、前言
session,
中间件,加一层,
代理服务器,能自动关联,即具有反向代理和负载均衡的特点。
架构的核心精髓:没有什么是加一层解决不了的问题!
反向代理:希望有一个服务器能帮我们转发和控制后面其他服务器的请求,自动的交个它们处理。
负载均衡
1、Nginx简介
1.2、什么是Nginx?
高性能:响应和并发更快,并发更高
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 ,同时也提供了IMAP/POP3/SMTP服务。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。
其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。中国大陆使用Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在全球活跃的网站中有12.8%的使用比率,大约2220万个网站。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。如果还能够不间断服务的情况下进行软件版本的升级。
Nginx采用C进行编写,官方数据测试能够支持高达 50,000 个并发连接数的响应
。(Tomcat才五六百个并发)
1.2、什么是正向代理?
举例:打游戏的时候挂VPN,不挂的时候延迟很慢,
中国目前是访问不了外网的,可以通过香港或者其他可以访问外网的代理来访问外网,相当于有一个中间中服务器帮我们去访问,然后返回的数据再发送给我们。
正向代理代理的是客户端,也就是在本机上装的
1.3、Nginx功能1–反向代理
反向代理代理的是服务端,我们可以无感知的浏览一些服务器资源,还可以让服务
比如访问www.baidu.com,我们每次访问的时候都是这个域名,现在的服务器肯定不是部署在一个服务器上的,但是我们不感知,对用户来说,访问www.baidu.com就够了,这时候服务端就有一个代理,这就是反向代理,代理服务器的,后面无论动态扩容增加多少台服务器,访问的永远是域名。
1.4、Nginx功能2–负载均衡
Nginx提供的负载均衡策略有2种:内置策略和扩展策略,内置策略 为轮询,加权轮询,lp hash,扩展策略,就天马行空,只有你想不到的没有他做不到的。
1.4.1、轮询
比如下图3台服务器的权值都是1,那么就会依次分发给每台服务器,
第1个请求给第1台服务器;
第2个请求给第2台服务器;
第3个请求给第3台服务器;
第4个请求给第1台服务器;
第5个请求给第2台服务器;
第6个请求给第3台服务器;
…
1.4.2、加权轮询
会加一个权重,大部分的请求会被分发到权重大的服务器上。
1.5、iphash
iphash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
Nginx默认带的操作
我们在写项目的时候会有session,会话,
n个 Tomcat就有 n 个session,肯定不可能做session共享的,可以用Redis做session共享,不建议使用Nginx做session共享。
1.6、Nginx功能3–动静分离
在我们软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变得资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源得特点将其做缓存操作,提高资源响应得速度。
静态资源每次都要从jar包中加载,非常麻烦,所以就希望有一个静态资源服务器帮忙加载。Nginx就可以
目前,通过使用Nginx大大提高了我们网站得相应速度,优化了用户体验,让网站得健壮性更上一层楼!
2、Nginx安装–Windows
官网:https://nginx.org/en/download.html
注意:下载稳定版,不要下载测试版
- 下载压缩包(zip包)之后直接解压即可。
解压之后的目录说明:
- 打开
E:\nginx-1.24.0\conf
下的nginx.conf
,可以看到如下
80端口是http的默认端口,所以也可以省略不写!
https默认的端口是443
- 在Nginx的解压目录下输入cmd回车,然后用浏览器访问本机:localhost,看到如下信息,说明Nginx启动成功了!
3、Nginx安装–Linux
-
去官网下载安装包,是tar包
-
传到Linux服务器上,解压
tar -zxvf nginx-1.24.0.tar.gz
- 输入命令去执行congifure文件:
./configure
,帮我们自动配置,
- 执行完之后再
make
,这是手动安装,
- 再执行一个
make install
- 这时候就可以看看Nginx是否存在了:
whereis nginx
- 也可以在
sbin
目录下启动,进入sbin
目录,cd sbin/
,输入命令ll
查看当前目录下的文件和文件夹,
然后执行nginx文件,./nginx
,如果执行成功是看不到任何日志的,Linux中如果不报错就代表安装成功了!也可以访问一下本机测试一下。
4、Nginx常用命令
Nginx端口号可以配置任何平台!
cd /user/local/nginx/sbin/
./nginx # 启动
./nginx -s stop # 停止,是强转退出
./nginx -s quit # 安全退出,在退出之前会保证所有的进程都一项一项的退出,保证是安全的
./nginx -s reload # 重新加载配置文件,用的非常多!
ps aux|grep nginx # 查看nginx进程
注意:如果连接不上,检查阿里云安全组是否开放端口,或者服务器防火墙是否开放端口!
相关命令:
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewall 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:标识添加的端口
5、Nginx实战及总结
Nginx的流程: