当前位置: 首页 > news >正文

Nginx反向代理+负载均衡

nginx反向代理

实验环境

角色IP地址
nginx反向代理服务器172.16.2.15
web服务器172.16.2.16
web服务器172.16.2.17

实验流程

1) 所有节点关闭防火墙和SELinux

[root@nginx ~]# systemctl stop firewalld
[root@nginx ~]# setenforce 0
setenforce: SELinux is disabled

2) 配置web01节点(IP:172.16.2.16)

# 安装httpd服务(Apache)
[root@web01~]# yum -y install httpd  # 编写web01默认页面(内容为<h1>web01</h1>)
[root@web01 ~]# echo "<h1>web01</h1>" > /var/www/html/index.html  # 启动httpd服务
[root@web01~]# systemctl start httpd  # 本机访问测试(验证页面是否正常)
[root@web01~]# curl 127.0.0.1  
<h1>web01/h1>
You have new mail in /var/spool/mail/root

3) 配置web02节点(IP:172.16.2.17)

# 安装httpd服务(Apache)
[root@web02 ~]# yum -y install httpd  # 编写web02默认页面(内容为<h1>web02</h1>)
[root@web02 ~]# echo "<h1>web02</h1>" > /var/www/html/index.html  # 启动httpd服务
[root@web02 ~]# systemctl start httpd  # 本机访问测试(验证页面是否正常)
[root@web02 ~]# curl 127.0.0.1  
<h1>web02</h1>
You have new mail in /var/spool/mail/root

4) 在nginx反向代理服务器(172.16.2.15)安装nginx服务

# 安装EPEL仓库(nginx依赖EPEL源)
[root@nginx ~]# yum install -y epel-release  # 安装nginx
[root@nginx ~]# yum -y install nginx  

5) 修改nginx配置文件并检查语法

5.1 编辑配置文件
[root@nginx ~]# vim /etc/nginx/conf.d/nginx.conf  # nginx配置文件路径
5.2 配置文件内容(反向代理+负载均衡)
# 定义后端服务器集群(负载均衡池,命名为backend_servers)
upstream backend_servers {server 172.16.2.16;  # 后端web01服务器IPserver 172.16.2.17;  # 后端web02服务器IP
}# 定义虚拟主机配置
server {listen       80;          # 监听80端口(HTTP默认端口)server_name  172.16.2.15; # 虚拟主机绑定的IP(nginx服务器自身IP)# 匹配所有根路径(/)下的请求location / {proxy_pass http://backend_servers;  # 将请求反向代理到后端服务器集群proxy_set_header Host $host;        # 传递原始请求的Host头信息(避免后端服务器获取不到真实Host)proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实IP到后端服务器}
}
5.3 检查配置文件语法
[root@nginx ~]# nginx -t  # 验证nginx配置文件语法是否正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

6) 启动nginx服务并验证可用性

# 重启nginx服务(使配置生效)
[root@nginx ~]# systemctl restart nginx  # 本地访问测试(多次执行,验证负载均衡效果)
[root@nginx ~]# curl 127.0.0.1
<h1>web01</h1>[root@nginx ~]# curl 127.0.0.1
<h1>web02</h1>[root@nginx ~]# curl 127.0.0.1
<h1>web01</h1>[root@nginx ~]# curl 127.0.0.1
<h1>web01</h1># 用nginx服务器IP访问测试(模拟外部客户端访问)
[root@nginx ~]# curl 172.16.2.15
<h1>web01</h1>[root@nginx ~]# curl 172.16.2.15
<h1>web02</h1>[root@nginx ~]# curl 172.16.2.15
<h1>web01</h1>[root@nginx ~]# curl 172.16.2.15
<h1>web01</h1>

7) 使用宿主机浏览器访问

通过宿主机浏览器输入 172.16.2.15,刷新页面可看到交替显示 web01web02,验证反向代理与负载均衡效果:

访问到了web01

访问到了web02

配置文件解析

1. 后端服务器集群(负载均衡池)定义

upstream backend_servers {# 后端web01服务器的IP地址(真实处理请求的服务器)server 172.16.2.16;# 后端web02服务器的IP地址(负载均衡时与web01分摊请求)
}
  • 作用:将多个后端web服务器组成一个集群,nginx通过此配置识别后端节点,默认采用「轮询」策略分发请求(即依次将请求分配给每个后端服务器)。

2. 虚拟主机与反向代理配置

# 定义一个虚拟主机(nginx的核心配置单元,对应一个服务实例)
server {listen       80;          # 监听服务器的80端口(HTTP协议默认端口,客户端访问时无需指定端口)server_name  172.16.2.15; # 绑定的服务器IP(即nginx反向代理服务器自身的IP,客户端通过此IP访问)# 匹配请求路径:所有以“/”开头的请求(即所有请求)location / {# 核心指令:将匹配到的请求反向代理到“backend_servers”集群proxy_pass http://backend_servers;# 重要参数1:传递客户端原始请求的Host头# 作用:后端web服务器(如Apache)需要通过Host头识别请求的域名/IP,避免因反向代理导致Host丢失proxy_set_header Host $host;# 重要参数2:传递客户端的真实IP地址# 作用:默认情况下,后端服务器会将nginx的IP识别为客户端IP,此参数可让后端获取真实客户端IP(便于日志记录、权限控制等)proxy_set_header X-Real-IP $remote_addr;}
}
```![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dc78aa24eccf4668819f8c47e9d31b33.png)
http://www.dtcms.com/a/389239.html

相关文章:

  • React Suspense底层原理揭秘
  • 关于pycharm高版本导入torch的问题
  • 【硬件研讨】【笔记本电脑】给老ThinkPad升级内存
  • 论文Review 3DGS SuGaR | CVPR 2024 | 3DGS 转 Mesh 开源方案!!
  • Makefile学习(一)- 基础规则
  • 动态代理 设计模式
  • APP小程序被攻击了该如何应对
  • 零基础从头教学Linux(Day 37)
  • ADB 在嵌入式 Linux 系统调试中的应用
  • 7HTMLCSS高级
  • 玩游戏/用设计软件提示d3dcompiler_47.dll缺失怎么修复?5步快速定位问题,高效修复不踩坑
  • HTML应用指南:利用GET请求获取全国宝马授权经销商门店位置信息
  • 《Java网络编程》第一章:基本网络概念
  • Python内存机制全解析:从基础到高级应用
  • Ubuntu24修改ssh端口
  • hadoop实现一个序列化案例
  • DBG数据库加密网关实现mySQL敏感数据动态脱敏与加密全攻略
  • 解决 Vue SPA 刷新导致 404 的问题
  • 大型语言模型 (LLMs) 的演进历程:从架构革命到智能涌现
  • 大语言模型为什么要叫【模型】
  • 教程上新丨ACL机器翻译大赛30个语种摘冠,腾讯Hunyuan-MT-7B支持33种语言翻译
  • 《C++程序设计》笔记
  • NVR接入录像回放平台EasyCVR海康设备视频平台视频监控系统常见故障与排查全解析
  • 半导体制造常提到的Fan-Out晶圆级封装是什么?
  • Qt 系统相关 - 文件
  • P2242 公路维修问题
  • 安装wsl
  • 牛客多校04C :Computational Geometry Problem(p-Dyck路计数)
  • CMake+visual studio 2022 +qt6 , 从Linux平台移植到windows下平台开发
  • 大模型系列——Playwright MCP 可以复用 Chrome 登录态了