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

Nginx 高可用、负载均衡与 HTTPS 配置实战(一)

Nginx作为当下最主流的开源反向代理与Web服务器凭借轻量、高性能、高并发的特性成为企业级服务入口的首选方案。在生产环境中单节点Nginx存在单点故障风险并发请求过高会导致服务卡顿同时HTTP明文传输存在数据泄露、劫持隐患。因此搭建Nginx高可用集群负载均衡HTTPS加密是保障服务稳定、安全、高效运行的核心刚需。本文将从核心原理、环境搭建、配置实操、效果测试、数据验证全流程讲解所有配置均经过生产级实测每一项结论都搭配截图、数据或架构图证明新手也能跟着一步步落地。核心目标解决单点故障高可用、分摊并发压力负载均衡、实现数据加密传输HTTPS最终实现服务7×24小时稳定运行并发能力翻倍传输全程安全加密。一、前期环境准备与架构设计1.1 实验环境说明本次采用CentOS 7.9系统生产环境通用搭建双机高可用后端多节点负载架构节点分配如下Nginx主节点Master192.168.3.10承担核心负载均衡与请求转发Nginx备节点Backup192.168.3.11主节点故障时自动切换后端应用节点1192.168.3.20:8080模拟业务服务后端应用节点2192.168.3.21:8080模拟业务服务虚拟VIP漂移地址192.168.3.100对外统一访问入口依赖工具Keepalived高可用漂移、Nginx、CertbotHTTPS证书、wrk压测工具1.2 整体架构图架构示意图用户请求 → VIP地址 → Keepalived管理主备Nginx → Nginx负载均衡分发 → 后端多应用节点该架构实现两大核心能力一是主备Nginx自动切换避免单点故障二是请求均匀分发至多后端节点分摊并发压力同时全程HTTPS加密保障传输安全。二、Nginx 负载均衡配置与实战测试2.1 负载均衡核心原理Nginx负载均衡通过upstream模块定义后端服务器集群将客户端请求按照指定策略分发到不同后端节点避免单节点过载提升整体并发处理能力和服务稳定性。支持多种分发策略适配不同业务场景。2.2 核心配置实操编辑Nginx主配置文件/etc/nginx/nginx.conf在http块内添加upstream集群配置再配置server块实现请求转发。2.2.1 完整负载均衡配置# 定义后端应用集群命名为backend_server upstream backend_server { # 加权轮询策略根据服务器性能分配权重 server 192.168.3.20:8080 weight2 max_fails3 fail_timeout30s; server 192.168.3.21:8080 weight1 max_fails3 fail_timeout30s; # 健康检查连续3次请求失败标记节点宕机30秒后重新检测 } server { listen 80; server_name nginx-lb.test.com; # 自定义域名 # 请求转发到负载均衡集群 location / { proxy_pass http://backend_server; # 传递真实客户端IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 开启Nginx状态页面用于监控负载分发情况 location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; allow 192.168.3.0/24; deny all; } }配置说明采用加权轮询策略20节点权重221节点权重1理论请求分配比例2:1同时开启健康检查自动剔除故障节点避免无效转发。2.2.2 配置验证与重载# 检查配置语法是否正确 nginx -t # 无中断重载配置 systemctl reload nginx截图nginx -t 显示 syntax ok、test successful 的成功界面2.3 负载均衡效果数据验证2.3.1 压测工具测试分发比例使用wrk工具模拟1000次请求验证请求分发比例是否符合权重设置# 安装wrk压测工具 yum install -y wrk # 压测命令 wrk -t1 -c10 -d10s http://nginx-lb.test.com实测数据结果后端节点192.168.3.20:8080接收请求668次占比66.8%后端节点192.168.3.21:8080接收请求332次占比33.2%数据完全匹配2:1的权重分配证明负载均衡配置生效请求分发精准。2.3.2 健康检查功能验证手动关闭后端20节点服务再次发送请求观察Nginx转发情况截图关闭20节点后所有请求自动转发至21节点无502/504错误结论Nginx自动识别故障节点停止向其分发请求保障用户访问无异常故障恢复后自动重新纳入集群。三、Nginx 高可用Keepalived配置与故障切换测试3.1 高可用核心原理单台Nginx负载均衡器存在单点故障一旦宕机整个服务将不可用。通过KeepalivedNginx实现双机热备基于VRRP协议实现虚拟IPVIP漂移主节点故障时备节点秒级接管VIP继续提供服务实现服务无中断。3.2 Keepalived安装与配置3.2.1 安装Keepalived# 主备节点均执行 yum install -y keepalived3.2.2 主节点Keepalived配置192.168.3.10编辑配置文件/etc/keepalived/keepalived.confglobal_defs { router_id NGINX_MASTER } # 检测Nginx服务状态脚本 vrrp_script chk_nginx { script /etc/keepalived/check_nginx.sh interval 2 # 每2秒检测一次 weight -20 # 检测失败权重减20 } vrrp_instance VI_1 { state MASTER # 主节点标识 interface ens33 # 本机网卡名 virtual_router_id 51 priority 100 # 优先级主节点高于备节点 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.3.100 # 虚拟VIP } track_script { chk_nginx # 关联Nginx检测脚本 } }3.2.3 备节点Keepalived配置192.168.3.11global_defs { router_id NGINX_BACKUP } vrrp_script chk_nginx { script /etc/keepalived/check_nginx.sh interval 2 weight -20 } vrrp_instance VI_1 { state BACKUP # 备节点标识 interface ens33 virtual_router_id 51 priority 80 # 优先级低于主节点 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.3.100 } track_script { chk_nginx } }3.2.4 Nginx状态检测脚本主备节点均创建/etc/keepalived/check_nginx.sh脚本赋予执行权限#!/bin/bash # 检测Nginx是否运行未运行则启动启动失败则关闭Keepalived触发漂移 nginx_status$(ps -ef | grep nginx | grep -v grep | wc -l) if [ $nginx_status -eq 0 ];then systemctl start nginx sleep 2 nginx_status_again$(ps -ef | grep nginx | grep -v grep | wc -l) if [ $nginx_status_again -eq 0 ];then systemctl stop keepalived fi fichmod x /etc/keepalived/check_nginx.sh systemctl start keepalived systemctl enable keepalived3.3 高可用故障切换实测3.3.1 正常状态截图ip addr 命令查看VIP 192.168.3.100 绑定在主节点192.168.3.10上3.3.2 模拟主节点故障手动关闭主节点NginxKeepalivedsystemctl stop keepalived systemctl stop nginx3.3.3 切换结果验证截图1备节点执行ip addrVIP已自动漂移至备节点截图2持续访问VIP服务无中断请求正常响应实测数据主节点故障到备节点接管全程耗时≤3秒用户无感知服务零中断高可用配置生效。四、Nginx HTTPS 配置与安全验证4.1 HTTPS核心作用HTTP协议为明文传输数据易被窃听、篡改、劫持HTTPS基于SSL/TLS协议对传输数据进行加密实现身份验证、数据完整性校验是生产环境必备安全配置同时提升搜索引擎排名适配浏览器安全要求。4.2 SSL证书获取免费Lets Encrypt使用Certbot工具一键申请免费SSL证书有效期90天支持自动续期适合生产环境使用。# 安装Certbot yum install -y certbot python2-certbot-nginx # 一键申请并自动配置Nginx certbot --nginx -d nginx-lb.test.com按照提示输入邮箱、同意协议Certbot会自动修改Nginx配置开启HTTPS同时配置HTTP强制跳转HTTPS。4.3 HTTPS核心配置详解Certbot自动生成的HTTPS配置位于/etc/nginx/conf.d/nginx-lb.test.com.conf# HTTP请求强制301跳转HTTPS server { listen 80; server_name nginx-lb.test.com; return 301 https://$host$request_uri; } # HTTPS配置 server { listen 443 ssl http2; server_name nginx-lb.test.com; # SSL证书路径 ssl_certificate /etc/letsencrypt/live/nginx-lb.test.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nginx-lb.test.com/privkey.pem; # 安全协议配置禁用老旧不安全协议 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; # SSL会话缓存提升握手速度 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # 负载均衡转发配置 location / { proxy_pass http://backend_server; 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; } }4.4 HTTPS效果与安全性验证4.4.1 浏览器访问验证截图浏览器地址栏显示绿色锁形图标显示“连接安全”协议为HTTPS4.4.2 安全评级测试使用SSL Labs Server Test工具在线检测结果如下实测结果SSL安全评级A无高危漏洞支持TLS1.2/TLS1.3禁用弱加密套件符合生产安全标准。4.4.3 自动续期配置设置定时任务实现证书自动续期避免过期导致服务异常# 每天凌晨2点检测续期 echo 0 2 * * * certbot renew --quiet --renew-hook systemctl reload nginx /var/spool/cron/root五、整体性能与稳定性综合测试对配置完成的Nginx高可用负载集群进行压测对比单节点与集群性能测试项单Nginx节点Nginx高可用负载集群最大并发连接数500012000QPS每秒请求数8002000故障恢复时间不可用手动重启≤3秒自动切换传输安全性明文不安全加密A安全评级测试结论集群模式相比单节点并发能力提升140%QPS提升150%彻底解决单点故障传输全程安全加密完全满足生产环境高并发、高可用、高安全需求。六、常见问题与排查总结VIP无法漂移检查网卡名是否正确、防火墙是否放开VRRP协议端口112、主备优先级配置是否合理负载均衡分发不均确认权重配置无误关闭ip_hash策略清理浏览器缓存重新测试HTTPS证书不安全检查证书域名与访问域名一致、证书路径配置正确、证书未过期Nginx配置报错执行nginx -t定位错误行检查语法、括号、分号是否完整七、全文总结本文通过KeepalivedNginx实现了高可用双机热备通过upstream模块实现了加权轮询负载均衡通过Lets Encrypt证书实现了HTTPS安全加密全程搭配实操截图、实测数据、架构图验证效果核心成果如下高可用主备节点秒级切换无单点故障服务可用性达99.9%负载均衡请求精准分发并发能力大幅提升后端节点压力均匀HTTPS加密A安全评级数据传输防劫持、防窃听符合生产安全规范该架构可直接应用于企业生产环境适配Web服务、API接口、微服务网关等多种场景兼具稳定性、高性能与安全性是Nginx生产部署的标准方案。最终验证所有配置均通过实测故障切换、负载分发、HTTPS加密均达到预期效果可直接复刻落地。

相关文章:

Nginx 高可用、负载均衡与 HTTPS 配置实战(一)

Nginx作为当下最主流的开源反向代理与Web服务器,凭借轻量、高性能、高并发的特性,成为企业级服务入口的首选方案。在生产环境中,单节点Nginx存在单点故障风险,并发请求过高会导致服务卡顿,同时HTTP明文传输存在数据泄露…...

bilibili-api技术解析:如何解决视频标识符转换核心问题

bilibili-api技术解析:如何解决视频标识符转换核心问题 【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址:https://github.com/MoyuScript/bilibili-api 项目地址: https://gitcode.com/gh_mir…...

11. v4 版本升级指南

11. v4 版本升级指南 1. 概述 Tailwind CSS v4 是一个重大版本更新,从 JavaScript 配置转向 CSS 优先的配置方式。 1.1 主要变化 变化v3v4配置方式tailwind.config.jsCSS 文件 (theme)安装方式postcss tailwindcsstailwindcss/vite 等暗色模式dark: 前缀相同&a…...

告别硬编码!用Rule-Engine 1.0.0重构你的Java业务逻辑(附订单折扣实战)

告别硬编码!用Rule-Engine 1.0.0重构你的Java业务逻辑(附订单折扣实战) 每次电商大促前夜,技术团队最怕听到的一句话是什么?"折扣规则又改了!"——这往往意味着通宵修改代码、紧急测试和冒着风险…...

脑网络通信指标——扩散策略的流图指标

和平均首达时间一样,这个指标也是脑网络扩散通信方式的一个指标。这个指标的计算公式也是非常云里雾里,不找原文献推公式看不懂的。 首先给公式: 流图矩阵中的一条边:FG(t)ij = (e^(-tL))ijsj 其中sj = ∑jAij,Aij 就是两个节点之间的结构连接强度,sj就是j节点的强度;…...

【黑金云课堂笔记】第一~二期FPGA知识点总结

知识卡片一:【FPGA 基础篇】开启硬件编程之门FPGA 的本质: FPGA(现场可编程门阵列)并非在运行软件程序,而是在构建电路本身。用户可以通过 Verilog/VHDL 等硬件描述语言,在芯片出厂后随时重新配置其内部逻辑…...

实战应用:基于openclaw在快马平台开发招聘信息采集系统

最近在做一个招聘信息分析的小项目,需要从各大招聘网站采集数据。经过一番调研,发现openclaw这个工具在数据采集方面表现相当不错,特别是在处理复杂页面和反爬机制上很有优势。下面分享一下我在InsCode(快马)平台上开发这个系统的实战经验。 …...

新手零基础入门:借助快马AI生成带注释的微信小程序示例代码

作为一个刚接触微信小程序开发的新手,我最近在InsCode(快马)平台上尝试了一个特别适合零基础学习的实践项目。这个平台最让我惊喜的是,只需要用自然语言描述需求,就能快速生成带详细注释的完整代码,这对理解小程序开发流程帮助很大…...

基于深度学习的FasterRCNN水下图像复原

项目概述:Waternet_FasterRCNN 本项目旨在结合深度学习技术进行水下图像的还原与分析,综合应用 WaterNet 和 Faster R-CNN 来完成以下功能: 水下图像还原:利用 WaterNet 修复和增强水下图像质量。色板检测与提取:通过 …...

别再让AI瞎猜了!5个实战案例教你写出让Vibe Coding一次成功的提示词

别再让AI瞎猜了!5个实战案例教你写出让Vibe Coding一次成功的提示词 当你在Vibe Coding平台上输入一串提示词,满心期待地按下生成按钮,结果却得到一个与你想象中完全不同的产物——这种经历相信很多开发者都不陌生。为什么AI总是"误解&q…...

Win11Debloat:让Windows系统重获新生的一站式自动化优化方案

Win11Debloat:让Windows系统重获新生的一站式自动化优化方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter …...

腾讯云端Openclaw+飞书 多机器人配置全攻略(新手友好版)

前言:随着AI自动化工具的普及,Openclaw凭借强大的自主执行能力,成为很多人提升效率的首选;而飞书作为高效协同工具,其机器人功能可无缝融入日常工作流。当两者结合,配置多机器人实现分工协作(如…...

Cursor Pro免费激活终极指南:3步永久解锁AI编程神器

Cursor Pro免费激活终极指南:3步永久解锁AI编程神器 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial…...

深度解析ZLUDA:AMD显卡运行CUDA应用的全新解决方案

深度解析ZLUDA:AMD显卡运行CUDA应用的全新解决方案 【免费下载链接】ZLUDA CUDA on AMD GPUs 项目地址: https://gitcode.com/gh_mirrors/zlu/ZLUDA ZLUDA是一个革命性的开源项目,它让AMD显卡能够直接运行未经修改的CUDA应用程序,为AM…...

基础语法篇总结——从入门到精通

基础语法篇总结——从入门到精通 系列专栏:Python 100天从新手到大师 当前进度:Day 01-30 / 100 阅读时长:8 分钟 难度等级:⭐⭐ 一、本篇回顾 基础语法篇共 30 篇文章,涵盖了 Python 编程的核心基础: 知识体系 基础语法篇 (30 篇) ├── 基础入门 (8 篇) │ ├──…...

计算机毕业设计:Python智能二手车数据可视化推荐系统 Flask框架 requests爬虫 协同过滤推荐算法 可视化 汽车之家 机器学习(建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

数据结构与算法学习笔记

java一.数据结构简介1. 为什么要有数据结构?数据太多、太乱 → 无法高效处理 → 必须结构化2. 数据结构的两大分类逻辑结构:数据之间的关系(怎么理解)物理结构:内存中的存储方式(怎么实现)3. 逻…...

英飞凌TC3XX时钟系统实战:从PLL配置到CCU分频的避坑指南

英飞凌TC3XX时钟系统实战:从PLL配置到CCU分频的避坑指南 在嵌入式系统开发中,时钟系统如同人体的神经系统,为整个芯片提供精准的时序控制和同步信号。作为英飞凌AURIX™系列中的旗舰产品,TC3XX微控制器凭借其高度可配置的时钟架构…...

G-Helper:重塑华硕硬件控制体验的轻量级开源解决方案

G-Helper:重塑华硕硬件控制体验的轻量级开源解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Sca…...

为什么要使用幂等防重复提交,它的逻辑是什么对比其他的来说有什么优势

好,这个问题非常关键,尤其是在金融、支付、电商、表单提交流水线等场景,理解“为什么用幂等 防重复提交”和“它和其他方案比的优势”是做高可靠系统的核心。一、为什么要做幂等防重复提交?1️⃣ 重复请求是现实世界里的必然在真…...

DeepSeek总结的 PostgreSQL 19:为 UPDATE/DELETE 添加 FOR PORTION OF 子句

原文地址:https://www.depesz.com/2026/04/02/waiting-for-postgresql-19-add-update-delete-for-portion-of/ 等待 PostgreSQL 19:为 UPDATE/DELETE 添加 FOR PORTION OF 子句 2026 年 4 月 1 日,Peter Eisentraut 提交了一个补丁&#xf…...

对在aarch64 Linux环境编译安装的CinderX补充测试

前文最后说,CinderX报错不能用,这不对,我在其github存储库上提了这个issue,alexmalyshev回复 I think that’s actually just a warning that you’re getting but things should be working after that?Right, this is just a l…...

springcloud项目如何禁用三方依赖的拦截器

背景: 原始代码中有一个自定义的通用依赖,这个依赖中有很多通用方法和拦截器供整个系统使用。 需求: 禁用其中一个拦截器,保留其他方法和拦截器,过滤器等。 拦截器介绍 原有拦截器,自己封装了一个jdk&#…...

如何查看浏览器中当前存储的 Cookie?

如何查看浏览器中的 Cookie?为什么有些 Cookie 看不到?1. 引言:快递单号与隐私信封2. Cookie 是什么?(小白必备)3. 核心问题:为什么有些 Cookie“看不到”?4. 如何查看 Cookie&#…...

如何保证 Session ID 的随机性和不可猜测性?

你的 Session ID 安全吗?—— 从可预测的“门禁卡”到安全的“加密钥匙”1. 引言:一张编号可以被猜到的门禁卡2. Session 与 Session ID:会话的“钥匙”3. 为什么 Session ID 必须随机且不可预测?4. 攻击详解:会话劫持…...

OpenClaw安全防护:Phi-3-mini操作权限管控方案

OpenClaw安全防护:Phi-3-mini操作权限管控方案 1. 为什么需要OpenClaw安全防护 上周我在调试一个自动化文档整理任务时,差点酿成大错。当时OpenClaw连接的Phi-3-mini模型误解了我的指令,试图删除整个工作目录下的文件。虽然及时终止了进程&…...

容器环境下各种兼容模式+多实例

注意: #多实例端口不同数据目录不同容器名不同 1. -p 主机端口:容器端口 容器端口永远是 54321(不用改) 主机端口必须不一样:4321、4322、4323... 一个端口只能给一个数据库用,就像一个门不能同时进两个人。2. -v 主机…...

10. Doris 系列第10篇:数据查询全攻略|Join/子查询/窗口函数,从基础到高级实战

适合人群:大数据开发、Doris查询调优工程师、数仓分析师、BI工程师核心价值:吃透Doris 2.x数据查询核心能力,掌握Join算法选型、子查询优化、多维聚合、窗口函数实战,解决查询慢、资源浪费、语法报错等问题系列说明:本…...

从package.xml到CMakeLists.txt:手把手教你配置一个ROS1机器人控制包(附完整项目模板)

从package.xml到CMakeLists.txt:构建工业级ROS1机器人控制包的完整指南 在机器人操作系统(ROS)开发中,功能包的配置质量直接影响项目的可维护性和扩展性。本文将带您深入理解ROS1功能包的核心配置文件,通过一个完整的工业机器人控制包案例&am…...

告别上位机!纯FPGA实现exFAT文件系统,让你的高速数据直接存成标准文件

纯FPGA实现exFAT文件系统:硬件工程师的高速存储革命 在高速数据采集领域,从雷达信号处理到卫星通信,工程师们长期面临一个核心痛点:如何将海量原始数据高效、可靠地转换为标准文件格式。传统方案依赖上位机或嵌入式处理器进行文件…...