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;
        }
    }
相关推荐
DX_水位流量监测34 分钟前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
电商API&Tina35 分钟前
京东 API 数据采集接口接入与行业分析
运维·服务器·网络·数据库·django·php
Mr_Xuhhh1 小时前
博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell
linux·运维·服务器
864记忆2 小时前
Qt创建连接注意事项
数据库·qt·nginx
f***24114 小时前
高效自动化管理临时文件的技术方案
运维·自动化
m0_738120724 小时前
应急响应——知攻善防靶场Linux-1详细应急过程
linux·运维·服务器·网络·web安全·ssh
obboda5 小时前
磁盘管理(MBR、LVM)
运维·5g
kylezhao20195 小时前
S7-1200 CPU 与 S7-200 SMART S7通信(S7-1200 作为服务器)
运维·服务器
摸鱼仙人~5 小时前
大模型文章生成的风格个性化与多文体写作:一套可落地的方法论
linux·运维·服务器
xybDIY5 小时前
亚马逊云 Organizations 组织 Link 账号关联与解绑自动化解决方案
运维·自动化·云计算·aws