上午
反向代理
安装
nginx 1.26.1
平滑升级
负载均衡
1
、
nginx
反向代理配置
反向代理:⽤户直接访问反向代理服务器就可以获得⽬标服务器 (后端服务器)的资源。
nginx
代理其他服务器的时候,不需要对方同意,更加方便了模块化操作。
2
、代理优化(
1
)简单轮询
3
、代理优化(
1
)
nginx
访客
IP
⿊名单
作为运维⼈员,我们可以选择允许哪些⽤户
IP
来访问我们的服务器,也可以选择允许哪个⽹段的⽤
户。
allow
:允许
deny
:拒绝
在
nginx
配置⽂件的
server
模块内可以添加下⾯的内容。 当访问被拒绝时,会显示
403
错误⻚
⾯。
4
、
nginx
日志查看与分析
访问来源
:
10.0.0.201
、
10.0.0.200
访问时间
:
2024
年
7
月
30
日
11
时
27
分
42
秒
2024
年
7
月
30
日
11
时
27
分
46
秒
2024
年
7
月
30
日
11
时
37
分
18
秒
访问方式和协议
:
GET
方法
HTTP/1.1
协议和
HTTP/1.0
协议
访问结果
:
200
状态码,表示请求成功,返回了
26
字节的数据。
403
状态码,表示禁止访问,分别返回了
153
字节和
555
字节的数据。
用户代理
:
curl/7.29.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
下午
nginx
默认情况下同一个文件只允许
1024
人访问
1
、代理优化(
2
)负载均衡
四层负载均衡使用
stream
模块,与七层的
http
模块同级。编译安装时需要加
--with-http_stub_
status_module
模块。
早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求, 但是随着互联网的发
展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的性能及单点故障问题就凸显出来
了,因此需要多台服务器进行性能的水平扩展及避免单点故障出现。
负载均衡是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好
的体验,快速增长的访问量和数据流量催生了各式各样的负载均衡的产品,很多专业的的负载均衡硬件
提供了很好的功能,但价格不菲,这使得负载均衡软件大受欢迎,
nginx
就是其中一个,在
linux
下有
nginx
、
Ivs
、
haproxy
等服务,可以提供复杂均衡服务。
(
1
)作用
解决服务器的高并发压力,提高应用程序的处理性能;
提供故障转移,实现高可用;
通过添加或减少服务器数量,增强网站的可扩展性;
在负载均衡器上进行过滤,可以提高系统的安全性;
1
、提高系统性能
负载均衡可以扩展网络设备和服务器的带宽,优化访问请求在服务器组之间的分配,提高系统的反
应速度和总体性能。
2
、监控服务器的运行状态
负载均衡能够监控服务器的运行状态,提高整个服务器组的可靠性。
3
、提供服务一致性
负载均衡器具有提供服务一致性的功能,负载均衡器通过读取客户端所发出 请求内的信息,进行重
写报头程序然后将请求发送至合适的服务器上,该服务器会维护着该客户端信息。在
http
通信当中,负
载均衡器提供服务一致性的功能就得到了很好的发挥,但提供该服务的途径并不是非常安全。但若将消
息加密后,负载均衡器就无法读取隐藏其中的信息了。
4
、摆脱停机时间
服务器托管公司可能会在维护期间将服务器关闭一段时间,这可能发生在业 务的高峰期。在基于云
服务器中,可以在将流量引导到另一台服务器的资源之后进行维护,前提是它们不在维护中,从而可以
消除网站的停机时间。
5
、管理服务器故障
由于它具有根据需要添加或删除实例的功能,因此可以跨云平台拥有多个数据中心。如果其中一台
服务器发生故障,则可以快速移动流量,将故障服务 器的流量流入到另一台服务器中。
6
、转发功能
按照一定的算法,将客户端请求转发到不同应用服务器上,减轻单个服务器 压力,提高系统并发
量。
7
、恢复添加
如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队 伍中。
8
、分发流量
分发流量、请求到不同的服务器。使流量平均分配,提高整个集群的响应速 度、服务的高可用性。
(
2
)策略
(
3
)配置
(
4
)状态
在服务器组的组内服务器后填写该服务器的状态
2
、
nginx
版本平滑升级
(
1
)原理
1
、启动后完成配置加载和端⼝绑定等动作, 分离出指定数量的⼯作⼦进程 ,这些⼦进程会持有监
听端⼝的⽂件描述符
(fd)
,并通过在该描述符上添加监听事件来接受连接。
2
、
Nginx
主进程在启动完成后会进⼊等待状态,负责响应各类系 统消息,如
SIGCHLD
、
SIGHUPSIGUSR2
等。
3
、主进程⽀持的信号
TERM
、
INT
:⽴刻退出
least_conn
:最少连接,把请求转发给连接数较少的后端服务器。轮询算法是把请求平均地转发给各个
后端,使它们的负载大致相同;
但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,
least_conn
这种方式就
可以达到更好的负载均衡效果。
[root@server ~]
# vim /usr/local/nginx/conf/nginx.conf
least_conn;
server
10
.0.0.20:80
weight
=
4
;
server
10
.0.0.30:80
weight
=
2
;
server
10
.0.0.40:80
weight
=
1
;
[root@server ~]
# /usr/local/nginx/sbin/nginx -s reload
5
、
url_hash:
按访问
url
的
hash
结果来分配请求,使每个
url
定向到同一个后端服务器,要配合缓存命中来使用。同一
个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源
时间的浪费。而使用
ur_hash
,可以使得同一个
url (
也就是同一个资源请求
)
会到达同一台服务器,一
旦缓存住了资源,再次收到请求,就可以从缓存中读取。
[root@server ~]
# vim /usr/local/nginx/conf/nginx.conf
hash
$request_url
;
server
10
.0.0.20:80
weight
=
4
;
server
10
.0.0.30:80
weight
=
2
;
server
10
.0.0.40:80
weight
=
1
;
[root@server ~]
# /usr/local/nginx/sbin/nginx -s reload
[root@server ~]
# vim /usr/local/nginx/conf/nginx.conf
server
10
.0.0.30:80 down;
[root@server ~]
# /usr/local/nginx/sbin/nginx -s reload
1
2
3
QUIT
:等待⼯作进程结束后再退出
KILL
:强制终⽌进程
HUP
:重新加载配置⽂件,使⽤新的配置启动⼯作进程,并逐步关闭旧进程
USR1
:重新⽣成⽇志⽂件
USR2
:启动新的主进程,实现热升级
WINCH
:逐步关闭⼯作进程及⼯作进程⽀持的信号
(
2
)过程
1
、查看旧版
nginx
的编译参数
;
2
、编译新版本
Nginx
源码包,安装路径需与旧版⼀致,注意
:
不要执⾏
make install;
3
、备份⼆进制可执⾏⽂件,⽤新版本的替换
;
4
、确保配置⽂件⽆报错
;
5
、发送
USR2
信号:向主进程
(master)
发送
USR2
信号,
Nginx
会启动⼀个新版本的
master
进程和
对应⼯作进程,和旧版⼀起处理请求
;
6
、发送
WINCH
信号:向旧的
Nginx
主进程
(master)
发送
WINCH
信号,它会逐步关闭⾃⼰的⼯作进
程
(
主进程不退出
)
,这时所有请求都会由新版
Nginx
处理
7
、发送
QUIT
信号
:
升级完毕,可向旧的
Nginx
主进程
(master)
发送
(QUIT
、
TERM
、或者
KILL)
信
号,使旧的主进程退出
;
8
、验证
nginx
版本号,并访问测试
.
(
3
)配置