Nginx反向代理,负载均衡,平滑升级

一、反向代理

反向代理:⽤户直接访问反向代理服务器就可以获得⽬标服务器(后端服务器)的资源。

1、修改配置

在配置⽂件中添加⼀⾏反向代理块指令

[root@server2 ~]# vim
/usr/local/nginx/conf/nginx.conf
......省略部分内容......
 server {
 listen 80;
 server_name localhost;
 charset utf-8;
#access_log logs/host.access.log main;
 location /status {
 stub_status on;
 access_log off;
 }
 location / {
 root html;
 index index.html index.htm;
 proxy_pass http://192.168.33.11:80; 
#添加⼀个反向代理模块
 }
 [root@server2 ~]# /usr/local/nginx/sbin/nginx -s reload
​

2、建⽴后端服务器

使⽤另⼀台虚拟机,安装 nginx ,然后进⼊ /usr/share/nginx/html/ ⽬录,修改其中的 index.html ⽂件,随 便写⼊⼀条内容进⾏测试。

[root@YH1 ~]# vim /usr/share/nginx/html/index.html
这⾥是192.168.33.11

3、访问测试

浏览器输⼊本机地址 192.168.33.110,将会⾃动跳转到后端服 务器 192.168.33.11 上。

curl 192.168.33.110
这⾥是192.168.33.11

二、nginx访客IP黑名单

可以选择允许哪些⽤户 IP 来访问我们的服务器,也可以选择允许哪个⽹段的⽤户。

1、修改配置

[root@server2 ~]# vim
/usr/local/nginx/conf/nginx.conf
......省略部分内容......
 server {
 listen 80;
 server_name localhost;
 charset utf-8;
 allow 192.168.33.22; #允许192.168.33.22
⽤户访问
 deny 192.168.33.0/24; #拒绝33.0⽹段的⽤户访
问
 deny all; #拒绝所有

2、访问测试

服务器拒绝了 33.0 ⽹段的⽤户访问,⽽本机浏览器正是通过 33.1 ⽹关与服务器建⽴连接,所以浏览器被拒绝访问了,显示 403 错误信息。

三、负载均衡

1、启动四台主机 [root@tomcat ~]# echo "I am static server" > /usr/local/nginx/html/index.html [root@git ~]# echo "I am d00 server" > /usr/local/nginx/html/index.html [root@dns ~]# echo "I am d01 server" > /usr/local/nginx/html/index.html [root@allowdeny ~]# echo "I am d02 server" > /usr/local/nginx/html/index.html

2、在staticserver主机上添加模块(upstream) 常用的状态有:

weight:服务访问的权重,默认是1。 down:表示当前的servel 时不参与负载均衡。 backup:预留的备份机品。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。 max_fails:在fail_timeout时间内,允许请求最大的失败次数,默认为1。当达到最大失败时,会在fail_timeout时间内不允许再次被选择。,返回proxy_next_upstream模块定义的错误。 fail_timeout:单位为秒,默认是10秒。指定一段时间内,请求经历了max_fails次失败后,该server不能访问的时间(暂停服务的时间)。max_fails可以和fail_timeout-起使用。 注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是backup。

1、轮询 [root@tomcat ~]# vim /usr/local/nginx/conf/nginx.conf

upstream backend { server 192.168.33.11:8080; server 192.168.33.22:8080; }

(2)weight 加权

upstream backend { server 192.168.33.11:8080 weight=5; server 192.168.33.22:8080 weight=2; # 权重默认为 1,谁权重大,谁优先处理请求 }

(3)ip_hash 当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。这样,当来自某一个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能保证其访问的还是后端web服务器A。 注意: 使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接受的请求少,而且设置后端服务器权重等方法将不起作用

upstream backend { ip_hash; # ip_hash算法 server 192.168.33.11:8080; server 192.168.33.22:8080; }

(4)least_conn least_conn:最少连接,把请求转发给连接数较少的后端服务器。轮询算法是把请求平均地转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,leastconn这种方式就可以达到更好的负载均衡效果。

upstream backend { least_conn; # 将请求转发给连接数较少的后端服务器 server 192.168.33.11:8080; server 192.168.33.22:8080; }

四、平滑升级

启动后完成配置加载和端⼝绑定等动作, 分离出指定数量的⼯作⼦进程 ,这些⼦进程会持有监听端⼝的⽂件描述符 (fd),并通过在该描述符上添加监听事件来接受连接。

1、主进程⽀持的信号

TERM、INT:⽴刻退出 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、配置

/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.26.1
# 确定当前nginx版本
wget https://nginx.org/download/nginx1.27.0.tar.g
# 获取新版本
tar -zxvf nginx-1.27.0.tar.gz 
# 解压
cd nginx-1.27.0/
./configure --prefix=/usr/local/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream
make && make install
ls /usr/local/nginx/sbin/
/usr/local/nginx/sbin/nginx -v
/usr/local/nginx/sbin/nginx.old -v
ps -aux | grep nginx
kill -USR2 1387
ps -aux | grep nginx
kill -WINCH 1452
ps -aux | grep nginx
kill -QUIT 1387
ps -aux | grep nginx
​
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值