news 2026/5/11 9:34:59

云计算Linux——nginx httpd后端 配置 反向代理(十二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
云计算Linux——nginx httpd后端 配置 反向代理(十二)

一、反向代理核心原理与作用

补充:
正向代理: VPN
反向代理: 访问网站(动态任务)

1.什么是反向代理?

反向代理是服务器端的代理。客户端访问反向代理服务器,由代理服务器将请求转发给后
端真实服务器,再将响应返回给客户端。客户端并不知道真实服务器的存在。
⽣活中的例⼦:你拨打某公司客服电话,接听的是总机,总机根据你的需求转接到不同的
客服⼈员。你不知道具体是谁在服务你,总机就是反向代理。
反向代理的作⽤:
第⼀,负载均衡。将请求分发到多台后端服务器,提⾼系统处理能⼒。
第⼆,安全隔离。后端服务器隐藏在内⽹,不直接暴露给公⽹。
第三,SSL 终⽌。在代理层处理 HTTPS 加解密,减轻后端负担。
第四,缓存加速。缓存后端响应,减少重复请求。

1. 动静分离与负载均衡

动静分离机制:反向代理服务器负责接收客户端请求,将静态任务(如图片、HTML)直接处理,而将动态任务(如业务逻辑)转发给后端服务器处理,实现压力分摊。

负载均衡实现:Nginx 作为反向代理服务器,通过特定的算法将请求分发到多台后端 Java 服务器,避免单点压力过大,提高系统整体吞吐量。

2. 安全隔离与加密

后端服务隐藏:客户端仅与反向代理服务器交互,无法直接感知后端真实服务器的 IP 地址和位置,有效保护后端服务免受直接攻击。

SSL 加密处理:可在代理层实现 HTTPS 加密,对客户端请求进行安全校验,确保数据传输的安全性,后端服务器可默认接收来自代理层的“安全”请求。

二、Nginx ⽀持的负载均衡算法:

2.1 什么是负载均衡?

当单台服务器⽆法处理所有请求时,需要多台服务器共同分担。负载均衡就是将请求合理
地分配到多台服务器上,使每台服务器的负载相对均衡。

2.2 轮询种类

轮询(Round Robin):默认策略,按顺序依次将请求分发给后端服务器,适用于服务器性能完全一致的场景。

加权轮询(Weighted Round Robin):根据服务器性能(如新旧、配置高低)分配不同的权重,性能高的服务器接收更多请求,实现资源利用最大化。

最小连接(Least Connections):优先将新请求分发给当前连接数最少的服务器,适用于处理时长差异大的场景(如登录请求与长连接任务)。

IP 哈希(IP Hash):通过对客户端 IP 进行哈希计算,将同一 IP 的请求固定分发到同一台后端服务器,用于实现会话保持(Session Persistence),避免因服务器切换导致的数据丢失(如大文件断点续传)。

负载均衡目的:通过算法将动态任务均匀分配给后端多台服务器,确保系统压力均衡,提升整体处理能力。

2.3 Nginx 负载均衡配置实操

2.3.1 基础负载均衡配置

Upstream 模块定义:在 `http` 区域定义 `upstream` 地址池(如 `backend`),并在其中通过 `server` 指令罗列后端服务器 IP 地址。

Location 路由转发:在 `server` 区域的 `location` 块中,通过 `proxy_pass` 指令将请求转发至 `upstream` 定义的地址池名称,而非直接写死后端 IP。

轮询算法验证:默认采用轮询(Round Robin)策略,通过 `curl` 命令或浏览器访问可观察到请求被均匀分发至后端服务器。

2.3.2 高级负载均衡算法

加权轮询(Weighted Round Robin):在 `server` 指令后添加 `weight` 参数(如 `weight=2`),根据权重比例分配请求流量,适用于服务器性能不均的场景。

IP 哈希(IP Hash):在 `upstream` 块首行添加 `ip_hash` 指令,确保同一客户端 IP 始终访问同一后端服务器,适用于会话保持场景。

最小连接数(Least Connections):在 `upstream` 块首行添加 `least_conn` 指令,将请求优先转发给当前连接数最少的后端服务器。

相应反向代理的配置代码:

反向代理的后端配置(测试): [root@httpd nginx]# yum remove -y nginx [root@httpd nginx]# yum install -y httpd [root@httpd nginx]# cd /var/www/html/ [root@httpd html]# ls [root@httpd html]# echo "this is httpd web page" >> index.html [root@httpd html]# ls index.html [root@httpd html]# systemctl start httpd [root@httpd html]# systemctl stop firewalld [root@httpd html]# netstat -natp | grep 80 tcp6 0 0 :::80 :::* LISTEN 24554/httpd 代理给单个后端:nginx.conf server { ...... location / { proxy_pass http://192.168.110.131; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ...... } #nginx 代理给多个后端地址的配置逻辑: ① 先把后端的2台httpd 安装好,并且设置不同的页面内容用于区分 ② 修改nginx 的配置文件: http { ...... upstream backend { #后端服务器地址池 #least_conn; 使用最小连接算法 #ip_hash; 使用IP_HASH算法 server 192.168.110.130:8081 weight=1; server 192.168.110.131:8081 weight=2; } ....... server { ...... location / { proxy_pass http://backend; #访问默认首页时,代理转发给后端的服务器中 } } }

三、阿里云 HTTPS 加密配置全流程解析

3.1 前置资源准备

域名与证书获取:必须先拥有一个合法域名,并申请用于加密通讯的数字证书。证书获取方式包括自行签发(测试用)或通过官方渠道(如阿里云)申请。

证书文件管理:从阿里云下载的证书通常包含 `.key` 和 `.crt` 两个文件,需将其上传至 Nginx 服务器的指定目录(如 SSL 目录)。

3.2 服务端配置与验证

Nginx 配置修改:需修改 Nginx 配置文件,取消 HTTPS server 块的注释,并将 `server_name` 指向自定义域名,同时指定证书和密钥的绝对路径。

服务重启与测试:配置完成后重启 Nginx 服务,并通过浏览器访问绑定的域名,验证是否能通过 HTTPS 协议正常访问页面。

3.3 阿里云资源申请与配置实操

ECS 是什么(大白话通俗易懂版)

ECS 全称Elastic Compute Service弹性计算云服务器

一句话解释:ECS 就是阿里云的云服务器,相当于放在阿里云机房里的一台远程电脑,24 小时不关机。

本地虚拟机(你电脑里的 CentOS)阿里云 ECS 云服务器
依赖你电脑开机,关机就用不了阿里云机房托管,常年在线
只有你自己能访问有公网 IP,全网都能访问
免费、性能看你电脑配置按量 / 包月付费,性能可随时升级
适合学习练习适合上线项目、正式部署

3.3.1 ECS 服务器选购策略

ECS 实例类型:面试中常被问及 ECS 的类型,需掌握通用型(平衡 CPU/内存)、计算型(CPU 比例高)、内存型(内存比例高)及 GPU 型(图形/计算加速)的区别

3.3.2 安全与连接管理

公网 IP 分配:ECS 创建时必须分配公网 IP,以便通过 SSH 工具(如 Xshell)从外部网络连接服务器。

登录凭证设置:支持密钥对和密码两种登录方式,设置复杂密码并通过公网 IP 成功连接服务器的过程。

总结

理解的框架:
① nginx 会把动态任务分给后端、静态任务自己处理
② load balance 反向代理、负载均衡是什么,干嘛的 怎么用

nginx 反向代理、负载均衡常见策略/算法(轮询、加权轮询、最小连接、IP_HASH)
阿里云申请一个免费的ECS 服务器
① mobaxterm 登录到ecs服务器里面
② 安装一个nginx
③ 尝试申请一个域名(小几块钱),申请一个加密证书,把域名和证书绑定在一起,然后给我们的nginx 使用
最终的效果,能够使用自己申请的域名访问到nginx 服务器页面(页面内容:xxx)

前置:在我们虚拟机中完成任务:
http ---> https 访问我们的nginx 虚拟机 (页面内容自定义)

需要证书进行加密

http 进行加密 --》https 访问
1、域名 www.dog.pi
2、申请一个可以加密通讯的证书(① 自己申请,自己给自己签发证书 ② 去官方申请并下载证书,比如阿里云)
3、使用这个证书绑定我们自定义的域名
4、修改nginx 配置文件,就可以使用https 访问我们的nginx 页面了

补充

克隆虚拟机

一、基础环境准备与克隆操作

1.基础环境

1.环境还原与防护关闭:操作前需先将虚拟机还原至干净环境,并关闭防火墙及核心防护功能,确保后续操作不受干扰。

环境还原与防护关闭:操作前需先将虚拟机还原至干净环境,并关闭防火墙及核心防护功能,确保后续操作不受干扰。

2. 执行完整克隆流程

克隆模式选择:在 VMware 中通过“管理”->“克隆”选项,选择“虚拟机中的当前状态”并创建“完整克隆”,确保生成独立的虚拟机而非链接文件。

存储路径规划:为避免占用系统盘空间,建议将克隆文件保存至磁盘空间充裕的非 C 盘目录下,并规范命名(如 centos-7-5)。

二、克隆后网络配置修正

1. IP 地址与主机名冲突解决

IP 地址冲突处理:由于克隆机与原机 IP 地址相同(如 192.168.1.131),需编辑网卡配置文件 `/etc/sysconfig/network-scripts/ifcfg-ens33`,将 IPADDR 修改为未占用的地址(如 192.168.1.140)。

网络服务重启:修改 IP 地址后,需重启网络服务使配置生效,并通过 `ip a` 命令验证 IP 是否已变更。

2. UUID 冲突与网卡编号修正

UUID 删除操作:为防止网卡编号冲突导致无法上网,必须删除网卡配置文件中的 UUID 行,系统重启后会重新生成新的 UUID。

配置保存与快照:修改完成后保存退出,建议立即为配置好的新虚拟机创建快照,以便后续快速恢复。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 9:34:39

微信单向好友检测:如何一键发现谁悄悄删除了你?

微信单向好友检测:如何一键发现谁悄悄删除了你? 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriend…

作者头像 李华
网站建设 2026/5/11 9:34:32

衍射深度神经网络技术实现:5步构建全光机器学习系统

衍射深度神经网络技术实现:5步构建全光机器学习系统 【免费下载链接】Diffractive-Deep-Neural-Networks Diffraction Deep Neural Networks(D2NN) 项目地址: https://gitcode.com/gh_mirrors/di/Diffractive-Deep-Neural-Networks 衍射深度神经网络&#xf…

作者头像 李华
网站建设 2026/5/11 9:32:22

QMCDecode:3分钟解锁QQ音乐加密格式,让音乐真正属于你

QMCDecode:3分钟解锁QQ音乐加密格式,让音乐真正属于你 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录&#…

作者头像 李华
网站建设 2026/5/11 9:31:39

SvelteKit全栈开发实战:基于PocketBase与AI集成的现代Web应用模板解析

1. 项目概述:一个全栈Svelte模板的深度拆解 最近在折腾一个需要快速验证想法的Web应用,从零开始搭架子太费时间了。找了一圈,发现了一个叫 spatz 的开源项目,它是一个基于 SvelteKit 的完整全栈模板。我花了一周时间把它从里到…

作者头像 李华
网站建设 2026/5/11 9:30:36

计算机学习笔记——希尔插入排序

目录 1.前言 2.直接插入排序 3.希尔插入排序 题目描述 输入输出样例 样例输入 #1 样例输出 #1 希尔排序的增量选择会对算法时间复杂度产生很大影响,上面的增量序列采用的是原始Shell增量序列,适用于数据量较少的情况。下面给出常用的增量公式Hibb…

作者头像 李华
网站建设 2026/5/11 9:30:19

3分钟打造你的专属桌面伙伴:DyberPet终极低代码指南

3分钟打造你的专属桌面伙伴:DyberPet终极低代码指南 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 你是否厌倦了冰冷的桌面图标和单调的工作界面?想象一下…

作者头像 李华