首页 > 系统相关 >Nginx反向代理,负载均衡,平滑升级

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

时间:2024-07-30 21:25:54浏览次数:16  
标签:负载 nginx 平滑 192.168 server Nginx html usr local

一、反向代理

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

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

相关文章

  • 【调试笔记-20240730-Linux-OpenWrt 23.05 安装 Docker 配置 bitnami/Wordpress-with-
    调试笔记-系列文章目录调试笔记-20240730-Linux-OpenWrt23.05安装Docker配置bitnami/Wordpress-with-NGINX实现微信用户在线注册登录文章目录调试笔记-系列文章目录调试笔记-20240730-Linux-OpenWrt23.05安装Docker配置bitnami/Wordpress-with-NGINX实现......
  • 7.30(nginx反向代理、nginx负载均衡)
    一、nginx反向代理1、动态服务器后端服务器对标Java服务器1.修改index.html文件,并且发布web服务[root@git~]#echo"thisisjavawebserver">/usr/local/nginx/html/index.html[root@git~]#/usr/local/nginx/sbin/nginx [root@git~]#/usr/local/nginx/sbin/ng......
  • Nginx搭建文件服务器
    下载Nginx,我这里下载1.26版本 http://nginx.org/download/nginx-1.26.1.zip下载完成后解压出来,进入conf文件夹,找到nginx.conf配置文件,定位到server栏修改如下后保存server{charsetutf-8;#设置支持中文listen80;#监听端口......
  • 在Linux系统中使用Nginx部署Vue2项目
    1、打包Vue项目,命令如下:npmrunbuild打包成功后,会生成一个dist目录,dist目录中的所有文件需要上传到服务器上。2、修改dist目录中的index.html(看情况省略此步)主要看css、js等文件的路径,例如以下情形:默认:<linkhref="/js/chunk-vendors.ebc2055a.js"rel="preload"as=......
  • 使用Nginx Proxy Manager配置Halo的反向代理和申请 SSL 证书
    本文介绍NginxProxyManager配置Halo的反向代理和申请SSL证书,如需要了解Halo2的安装,参考如何在Linux云服务器上通过DockerCompose部署安装Halo,搭建个人博客网站?。目录安装NginxProxyManagerNginxProxyManager安装新建docker-compose.yaml启动NPM配置Halo的反向代理申......
  • nginx配置log文件作用域
    在Nginx中,配置日志文件的作用域通常是通过修改Nginx配置文件来实现的。你可以在http、server或location块中设置access_log和error_log指令来定义日志文件的位置和格式。以下是一个配置示例,展示了如何在Nginx中设置访问日志和错误日志:http{#全局访问日志access_log......
  • 在Linux系统中修改Nginx的端口
    1、查找Nginx的安装目录,并进入安装Nginx目录,命令如下:whereisnginx2、编辑conf目录中的nginx.conf文件,修改端口,命令如下:vim./conf/nginx.conf 如上图所示,通过vim编辑文件,按i键可以编辑文件,按Esc键可以退出编辑,编辑完成后需要保存,保存命令如下::wq3、重启Nginx进......
  • playbook+roles安装nginx实战
    基本目录结构host文件夹用于存放主机清单文件hosts文件hosts文件内容如下:(仅供参考)[proxy]node2[web]192.168.xx.xxplaybook-all-roles.yml文件用于指定执行哪个role的文件(命名可以自定义)文件内容如下:(仅供参考)因为roles文件夹下只有nginx一个文件夹,所以-rol......
  • linux系统下nginx测评
    linux中安装的nginx目录前期调研:寻找安装路径:查询本版号:一、身份鉴别a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措......
  • 使用 Python 平滑和对称不规则形状和曲线
    我需要完成三项任务:正则化曲线曲线的对称性完成不完整的曲线例如,这里是输入和预期的输出图像:输入输出|||在一般设置中,形状可以由任何SVG曲线基元(贝塞尔曲线、直线、弧线)表示。为了统一表示,示例包含曲线的折线近似。这些折线保存为......