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;
        }
    }
相关推荐
赵民勇12 分钟前
Linux file命令详解
linux·运维
li-xun28 分钟前
LINUX DO 社区注册机制调整与公益 AI 服务动态
linux·运维·人工智能
j_xxx404_29 分钟前
MySQL表操作硬核解析:从 CREATE TABLE 到磁盘文件、ALTER TABLE 与 DDL 风险
运维·服务器·数据库·c++·mysql·adb·ai
前端程序猿i42 分钟前
Nginx 教程:从入门到能上线
运维·nginx
明辰之林43 分钟前
Nginx 1.26.2 → 1.30.2 升级指南(离线环境)
nginx
木雷坞44 分钟前
Qdrant Docker 部署教程:数据卷、API Key 和集合初始化
运维·docker·容器·知识图谱
团象科技1 小时前
外贸站选海外服务器 拆解跨境运营中常被忽略的核心性能细节
运维·服务器
Lv_沐曦1 小时前
银河麒麟桌面版安装、多屏配置、触摸校准
运维·docker·samba·vsftpd·银河麒麟·触控校准·多屏配置
半壶清水2 小时前
ubuntu下利用ns-3 + NetAnim搭建可视化路由选路过程的方法
linux·运维·ubuntu
ting94520003 小时前
SellerClaw 全栈技术深度拆解:基于多智能体集群的跨境电商全链路自动化系统实现
运维·自动化