nginx实现负载均衡(三)

之前说过大部分我们用到的配置都是在http模块中配置的,这里要实现的负载均衡也是一样的,要在http模块中的http全局块中指定,这里我们先给出一个例子

demo

powershell 复制代码
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	
	
	#定义一个名为名为 backend 的 upstream 指令域 ,默认使用的轮询,
	#每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,
	#故障系统被自动剔除,使用户访问不受影响。Weight 指定轮询权值,Weight值越大,
	#分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
	# 默认的weight值是1
	upstream backend {
    server 127.0.0.1:8080;      
    server 127.0.0.1:8081;              
    }
	# 可以给每个服务器设定不同的权重
	upstream backend01 {
    server 127.0.0.1:8080 weight=2;       
    server 127.0.0.1:8081 weight=1;              
    }
	# 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
	upstream backend02 {
	ip_hash;
    server 127.0.0.1:8080;       
    server 127.0.0.1:8081;              
    }
    server {
        listen       80;
        server_name  121.4.170.108;
	  # 在页面输入121.4.170.108  会默认跳转到tomcat的页面
        location / {
            proxy_pass  http://backend02;
        }
    }
}

定义负载均衡模块,upstream开头

我们在这里定义了三个负载均衡,分别名为backend,backend01,backend02,具体使用哪个需要在server块中指定,如这里proxy_pass 后面跟的是http://backend02;,也可以是http://backend01或者http://backend

powershell 复制代码
server {
        listen       80;
        server_name  121.4.170.108;
	  # 在页面输入121.4.170.108  会默认跳转到tomcat的页面
        location / {
            proxy_pass  http://backend02;
        }
    }

配置负载均衡

定义负载均衡

使用upstream开头

定义一个名为名为 backend 的 upstream 指令域 ,默认使用的轮询,

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,

故障系统被自动剔除,使用户访问不受影响。Weight 指定轮询权值,Weight值越大,

分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。

默认的weight值是1

  • demo01
    定义的位置是在http的全局块中,这里定义了一个名为backend的负载均衡配置
powershell 复制代码
upstream backend {
    server 127.0.0.1:8080;      
    server 127.0.0.1:8081;              
    }
  • demo02
    可以给每个服务器设定不同的权重
powershell 复制代码
upstream backend01 {
    server 127.0.0.1:8080 weight=2;       
    server 127.0.0.1:8081 weight=1;              
    }
  • demo03
    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
powershell 复制代码
upstream backend02 {
	ip_hash;
    server 127.0.0.1:8080;       
    server 127.0.0.1:8081;              
    }

还有别的配置规则,这里不一一举例

指定具体的负载均衡规则

就如我们上面所说,在proxy_pass后指定即可

powershell 复制代码
server {
        listen       80;
        server_name  121.4.170.108;
	  # 在页面输入121.4.170.108  会默认跳转到tomcat的页面
        location / {
            proxy_pass  http://backend02;
        }
    }
相关推荐
05大叔1 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密1 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20151 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑
卷福同学2 小时前
【养虾日记】QClaw操作浏览器自动化发文
运维·人工智能·程序人生·自动化
woho7788993 小时前
不同网段IP的网络打印机,打印、扫描设置
运维·服务器·网络
耗子会飞3 小时前
小白学习固定VM虚拟机的centos服务器的IP
运维·服务器·centos
门豪杰3 小时前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code
新新学长搞科研4 小时前
第五届电子、集成电路与通信技术国际学术会议(EICCT 2026)
运维·人工智能·自动化·集成测试·信号处理·集成学习·电气自动化
桌面运维家4 小时前
Windows/Linux双启动:BIOS/UEFI多配置桌面创建指南
linux·运维·windows
無法複制4 小时前
debian安装Postgresql-14.x
运维·postgresql·debian