nginx反向代理、负载均衡

nginx反向代理、负载均衡

一、反向代理 proxy模块

1、作用

提升业务的性能、并发能力

隐藏后端真实业务服务器的信息,增强安全性

2、语法

conf 复制代码
location URI {
	proxy_pass	后端服务器地址; 
}
  • 访问nginx时地址为/kr, 代理到192.168.140.10:9000
conf 复制代码
        location /kr {
            proxy_pass http://192.168.140.10:9000/project;
        }
  • 注意: 后端服务器没有具体的uri地址时,nginx会将location中的uri地址拼接到后端服务器地址
conf 复制代码
        location /test {
            proxy_pass http://192.168.140.10:9000;
        }
  • 注意:location以正则表达式匹配请求时,后端服务器地址不允许有任何uri
conf 复制代码
        location  ~  /music {
            proxy_pass http://192.168.140.10:9000/project;
        }

3、配置后端服务器记录真实的客户端地址

nginx进行反向代理时,默认情况下,后端业务服务器记录访问日志时会记录Nginx的地址,为了让后端能正常记录真实的客户端地址,需要做如下配置:

  • 通过proxy_set_header在请求中添加X-REAL-IP字段
conf 复制代码
        location /kr {
            proxy_pass http://192.168.140.10:9000/project;
            proxy_set_header X-REAL-IP $remote_addr;
        }
  • 修改后端业务服务器的访问日志格式
conf 复制代码
	 pattern="%{X-REAL-IP}i %t "%r" %s %b %{Referer}i %{User-Agent}i"

二、负载均衡 upstream模块

2.1 负载均衡作用

提升业务的并发能力

由nginx接收请求,根据不同的算法/策略将请求转发到后端的多个服务器上

2.2 调度算法/策略

  • rr 轮询,默认算法, 负载均衡效果最优

    支持设置不同的权重值

  • sh 源hash

    一段连续的时间内,同一个客户端的所有请求会到同一个后端服务器

  • lc 最少连接

2.3 配置语法

conf 复制代码
upstream  服务器组 {
	[负载均衡算法]; 
	server  IP:port [weight=1] [fail_timeout=秒] [max_fails=次数]; 
	server  IP:port; 
}
conf 复制代码
location  uri {
	proxy_pass  http://服务器组;
}
conf 复制代码
    upstream java {
       server 192.168.140.10:9000 weight=1 fail_timeout=3 max_fails=2;
       server 192.168.140.10:9001 weight=1 fail_timeout=3 max_fails=2;
       server 127.0.0.1:8000 backup;
    }
    
      location / {
           proxy_pass http://java/project/;
           proxy_set_header X-REAL-IP $remote_addr;
        }

        location /mp3 {
           proxy_pass http://java/music/;
           proxy_set_header X-REAL-IP $remote_addr;
        }

    server {
        listen       8000;
        server_name  localhost;

        location / {
            root   /sorry;
            index  index.html index.htm;
        }
    }
相关推荐
画中有画21 小时前
使用yolov8实现自动化脚本
运维·yolo·自动化
m0_740859621 天前
Nginx进行配置文件拆分(以windows解压版为例)
nginx
Piko6141 天前
H3C IRF2 堆叠实战:打造高可靠核心交换网络
运维·网络·笔记
开发小程序的之朴1 天前
认识安企CMS-安装安企CMS的环境要求
nginx·golang·系统架构
万联WANFLOW1 天前
SD-WAN 控制平面高可用怎么做?SDWAN 控制器挂了,全网会发生什么
运维·网络·分布式·架构
SkyWalking中文站1 天前
认识 Horizon UI · AI Assistant:用日常语言查询你的可观测性数据
运维·监控·自动化运维
崇山峻岭之间1 天前
Keil5输出hex转换为bin的设置
linux·运维·服务器
Hoxy.R1 天前
KingbaseES读写分离高可用集群扩容、备库重建与故障切换实战
运维·数据库
考虑考虑1 天前
nginx配置ssl
运维·后端·nginx
着迷不白1 天前
Linux 磁盘管理完全指南:分区、文件系统、挂载与 LVM 实战
linux·运维·服务器