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;
        }
    }
相关推荐
Avan_菜菜2 小时前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB1 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
ping某4 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智6 天前
ARP代理--工作原理
运维·网络·arp·arp代理