一、反向代理
反向代理:⽤户直接访问反向代理服务器就可以获得⽬标服务器(后端服务器)的资源。
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 标签:负载,nginx,平滑,192.168,server,Nginx,html,usr,local From: https://blog.csdn.net/weixin_69088860/article/details/140806797