Nginx 反向代理与负载均衡

Nginx 反向代理与负载均衡

一、基本概念

1、代理概念

代理是指一个代表或渠道,涉及两个角色:

  • 被代理角色:实际的服务提供者(如某达斯厂家)
  • 目标角色:服务的消费者(如用户)
2、正向代理 vs 反向代理
正向代理
  • 特点:代理客户端,客户端明确知道要访问的目标服务器
  • 应用场景:科学上网、企业内部网络访问控制
  • 工作模式:客户端 → 正向代理 → 目标服务器
反向代理
  • 特点:代理服务器端,客户端不知道实际处理请求的服务器
  • 应用场景:服务器集群、负载均衡、高可用
  • 工作模式:客户端 → 反向代理 → 后端服务器集群

二、Nginx反向代理配置

核心模块
  • Http Proxy模块:实现反向代理功能
  • 常用指令 :
    • proxy_pass:指定后端服务器地址
    • proxy_cache:缓存功能(需集成第三方模块)

三、Nginx 负载均衡配置

环境配置
主机 Ip 安装 系统
Nginx 192.168.100.10 Nginx Centos7
Rs1 192.168.100.20 Httpd Centos7
Rs2 192.168.100.30 Httpd Centos7
  • 三台主机都关闭防火墙和 selinux,还需要配置好 yum 仓库
  • nginx 主机部署 nginx 服务
  • rs1、rs2 主机上,安装 httpd,然后添加一个测试网页
1、负载均衡之轮询
在 nginx 主机上,修改配置文件,设置负载均衡

vim /usr/local/nginx/conf/nginx.conf

nginx 复制代码
upstream webserver{
	server 192.168.100.20;
	server 192.168.100.30;
}

location / {
	proxy_pass http://webserver;
}
测试访问

进行刷新重复访问,负载均衡以轮询的方式将接收到的请求按照顺序逐一分配到不同的后端服务器

2、负载均衡之设置权重
在 nginx 主机上,修改配置文件,设置负载权重

vim /usr/local/nginx/conf/nginx.conf

nginx 复制代码
upstream webserver{
	server 192.168.100.20 weight=2;
	server 192.168.100.30;
}

location / {
	proxy_pass http://webserver;
}
测试访问

进行刷新重复访问,发现 rs1 访问两次后才轮询到 rs2

3、负载均衡之 ip_hash
在 nginx 主机上,修改配置文件,设置负载权重 ip_hash

vim /usr/local/nginx/conf/nginx.conf

nginx 复制代码
upstream webserver{
    ip_hash;
	server 192.168.100.20 weight=2;
	server 192.168.100.30;
}

location / {
	proxy_pass http://webserver;
}
测试访问

进行刷新重复访问,发现访问全部是 rs1

nginx 记录了这个 ip 和 hash 值,那么下次同一个 ip 过来还是会分配到这个 httpd

四、动静分离 nginx+tomcat

环境配置
  • 添加一台 Tomcat:192.168.100.40

  • 部署测试网页

配置 nginx,设置动静分离

vim /usr/local/nginx/conf/nginx.conf

nginx 复制代码
upstream webserver{
	server 192.168.100.20;
	server 192.168.100.30;
}
upstream tomcat{
	server 192.168.100.40:8080;
}

location / {
	proxy_pass http://webserver;
}
location /test {
	proxy_pass http://tomcat;
}
测试访问
相关推荐
Shadow(⊙o⊙)1 分钟前
仿muduo实现高并发服务器——EventLoop.hpp初步设计(未纳入超时管理模块)
运维·服务器
nlp研究牲18 分钟前
Linux 常用命令速查手册:英文全称、中文释义、巧记方法与实战示例
linux·运维·php
众壹新能源科技35 分钟前
逆变器半夜停机等备件48小时少发10万度电,备件安全库存怎么算
大数据·运维·安全
广州智造38 分钟前
Radioss破坏模型FAILJOHNSON (Johnson-cook) 和 FAILTAB1
运维·数据库·自动化·仿真·建模·后处理·前处理
味悲42 分钟前
Nginx笔记
linux·运维·笔记·nginx
电商全栈程序猿42 分钟前
2026 开源商城系统选型指南:开发者实测对比Tigshop、ShopXO、CRMEB
java·运维·开源
时间售卖铺1 小时前
MySQL 库表设计:数据库范式详解
运维·数据库·mysql·云原生
Lucky_Turtle1 小时前
【Linux】ip命令,路由表相关配置
linux·运维·tcp/ip
dawnsky.liu1 小时前
在 RHEL 中使用 goose 实现主机运维
linux·运维·aiops
马立杰1 小时前
Docker Build 编译补丁版 PHP7.4 FPM 容器镜像教程(CVE-2026-109618 CVE-2026-109619)
运维·docker·容器·php