Nginx 负载均衡与高级配置实战指南
1. 负载均衡基础配置1.1 配置 upstream 模块编辑 Nginx 配置文件定义后端服务器组vim /usr/local/nginx/conf/nginx.conf http { upstream backend { server 192.168.150.139 weight2; # 权重为2接收更多请求 server 192.168.150.140; # 默认权重为1 server 127.0.0.1 backup; # 备用服务器仅当所有主服务器失效时启用 } # 定义虚拟主机实现反向代理负载均衡 server { listen 80; server_name www.westos.org; location / { proxy_pass http://backend; # 将请求转发到后端服务器组 } } }配置完成后重新加载 Nginxsystemctl reload nginx1.2 权重与备用机说明权重配置weight2表示该服务器接收请求的概率是其他服务器的两倍备用机限制备用机不能设置为正在使用的主机否则测试会出错代理循环避免如果 upstream 中包含127.0.0.1:80或本机 IP同一监听端口Nginx 会将请求重新发给自身形成代理循环。需要修改本机监听端口来避免将别的机器设置为备用机子当后端全挂了之后会启动备用机1.3 域名解析配置在测试主机上添加域名解析# 编辑 hosts 文件vim/etc/hosts# 添加以下内容192.168.150.139 server5 www.westos.orgWindows 系统可在C:\Windows\System32\drivers\etc\hosts文件中添加相同解析。2. 负载均衡调度算法2.1 ip_hash 算法upstream myapp { ip_hash; # 基于客户端 IP 的哈希算法 server 192.168.150.138; server 192.168.150.140; }特点同一客户端 IP 的请求总是转发到同一台后端服务器不支持 backup 参数如果某台服务器 down 掉该服务器的客户端会一直访问失败Ip哈希算法中将server7down掉就会一直访问62.2 sticky 算法upstream backend { sticky cookie srv_id expires1h path/; server 192.168.150.139; server 192.168.150.140; }配置说明sticky cookie srv_id基于 cookie 的会话保持expires1hcookie 有效期为 1 小时path/cookie 作用于整个站点验证方法使用浏览器访问测试页面按 F12 打开开发者工具查看 Application → Cookies 中的srv_id值报错将本来的westos的server移动到localhost的上面配置文件中存在两个或更多 server 块使用了相同的 server_name “www.westos.org” 和端口 80。Nginx 会忽略后面重复的块只使用第一个匹配的块浏览器访问主机就会跳转或者在文件夹C盘C:\Windows\System32\drivers\etc\hosts打开hosts文件在记事本中编辑加入访问的主机的解析然后才能使用浏览器测试3. Nginx 模块化编译3.1 下载 sticky 模块# 克隆 sticky 模块源码gitclone https://github.com/fabianofurtado/nginx_sticky_module_ng3.2 动态编译推荐# 进入 Nginx 源码目录cdnginx-1.28.3/# 配置编译参数./configure--prefix/opt/nginx\--with-http_ssl_module\--with-http_stub_status_module\--with-compat\--add-dynamic-module../nginx_sticky_module_ng# 编译make# 安装模块/opt/nginx/sbin/nginx-sstopcp-fnginx /opt/nginx/sbin/nginxmkdir/opt/nginx/modulescpngx_http_sticky_module.so /opt/nginx/modules//opt/nginx/sbin/nginx -s stop向当前运行的 Nginx 主进程发送 stop 信号优雅地停止服务不再接受新请求处理完当前连接后退出。cp -f nginx /opt/nginx/sbin/nginx将当前目录下的 nginx 可执行文件强制覆盖到 /opt/nginx/sbin/nginx即替换旧版本的二进制文件。3.3 静态编译./configure--prefix/opt/nginx\--with-http_ssl_module\--with-http_stub_status_module\--add-module../nginx_sticky_module_ngmakemakeinstall想更改编译方式cd nginx-1.28.3/ vim auto/cc/gccmake clean ./configure ....... make (make install)3.4 启用动态模块在nginx.conf顶部添加load_module /opt/nginx/modules/ngx_http_sticky_module.so;重新加载nginx服务4. 连接与请求限制4.1 限制并发连接数mkdir /usr/local/nginx/html/download 创建目录 cp vim.jpg /usr/local/nginx/html/download/ 拷贝测试地图片文件到该目录下# 创建共享内存区域 limit_conn_zone $binary_remote_addr zoneaddr:10m; server { location /download/ { limit_conn addr 1; # 每个 IP 最多 1 个并发连接 } }测试命令ab-c1-n10http://192.168.150.139/download/vim.jpg必须单线程下载超出的并发连接会失败查看错误日志tail-f/usr/local/nginx/logs/error.log4.2 限制请求速率# 定义请求限制区域 limit_req_zone $binary_remote_addr zoneone:10m rate1r/s; server { location / { limit_req zoneone burst5; # 允许突发 5 个请求 # limit_req zoneone burst5 nodelay; # 立即处理突发请求 } }nginx -s reload参数说明zoneone:10m创建 10MB 的共享内存区域rate1r/s限制每秒 1 个请求burst5允许超出速率的请求排队等待最多 5 个nodelay立即处理突发请求超出部分返回 503超出的请求数会失败4.3 限制下载速率server { location /download/ { limit_conn addr 1; limit_rate 100k; # 限制下载速度为 100KB/s } }测试ab-c1-n5http://192.168.150.139/download/vim.jpg# 下载时间约需 20 多秒5. 高级功能配置5.1 自动索引location /download/ { autoindex on; # 启用目录列表 ... }默认访问/download/会返回 403 Forbidden启用autoindex on后会显示目录中的文件列表。5.2 浏览器缓存配置location ~ .*\.(gif|jpg|png)$ { expires 365d; # 缓存 365 天 root html; }配置说明正则匹配所有以.gif、.jpg或.png结尾的请求expires 365d告诉浏览器缓存 365 天root html静态文件根目录为 Nginx 安装路径下的 html 目录测试5.3 日志轮询脚本创建日志轮询脚本/opt/nginx_log.sh#!/bin/bashcd/usr/local/nginx/logsmvaccess.log access_$(date%F-d-1day).logkill-USR1$(cat/usr/local/nginx/logs/nginx.pid)vim /opt/nginx_log.sh切换到 Nginx 日志目录。把当前的 access.log 重命名为 access_YYYY-MM-DD.log其中日期是前一天-d -1day。kill -USR1 \cat /usr/local/nginx/logs/nginx.pid向 Nginx 主进程发送 USR1 信号该信号让 Nginx 重新打开日志文件。此时 Nginx 会新建一个 access.log继续写入新日志而旧日志已被改名保留设置执行权限并添加到定时任务chmodx /opt/nginx_log.shcrontab-e# 添加以下内容每天凌晨执行00 00 * * * /opt/nginx_log.sh执行/opt/nginx_log.shcd/usr/local/nginx/logs/ ll5.4 Nginx 日志可视化GoAccess# 下载并安装 GoAccesswgethttps://tar.goaccess.io/goaccess-1.8.tar.gztar-xzfgoaccess-1.8.tar.gzcdgoaccess-1.8/# 安装依赖yuminstall-yncurses-devel GeoIP-devel libmaxminddb-devel# 编译安装./configure --enable-utf8 --enable-geoipmmdbmakemakeinstall# 启动实时监控goaccess /usr/local/nginx/logs/access.log\-o/usr/local/nginx/html/report.html\--log-formatCOMBINED\--real-time-html# 生成测试流量ab-c100-n400http://192.168.150.139/report.html6. 安全与监控配置6.1 站点限制location /status { stub_status on; # 启用状态监控 access_log off; # 禁用访问日志 allow 127.0.0.1; # 只允许本机访问 deny all; # 拒绝其他所有访问 }测试命令curllocalhost/status6.2 中文乱码6.3 虚拟主机配置# 创建网站目录mkdir/www1/echoweb1/www1/index.html# 配置虚拟主机vim/usr/local/nginx/conf/nginx.confvim /etc/hostscurl www.example.com6.4 HTTPS 配置# 生成 SSL 证书cd/etc/pki/tls/certsmakecert.pem# 复制证书到 Nginx 配置目录,将pem文件移动到跟nginx.conf一个路径cpcert.pem /usr/local/nginx/conf/# 配置 Nginxvim/usr/local/nginx/conf/nginx.confnginx-sreload测试 HTTPScurlhttps://www.example.com-k6.4 HTTP 重定向到 HTTPSserver { listen 80; server_name www1.westos.org; rewrite ^/(.*)$ https://www1.westos.org/$1 permanent; }重新加载然后测试6.5 路径重定向# 将 www.westos.org/bbs 重定向到 bbs.westos.org rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1 permanent;mkdir/web2cd/web2echowww.westos.orgindex.htmlmkdir/bbsechobbs.westos.org/bbs/index.html6.6 防盗链配置配置server2上的apache服务盗链server1上的图片配置域名解析vim /etc/hostsvim index.htmllocation ~ \.(jpg|png)$ { root /www; valid_referers none blocked www.westos.org; if ($invalid_referer) { # return 403; # 直接返回 403 rewrite ^/ http://bbs.westos.org/daolian.jpg; # 重定向到指定图片 } }7. HTTP 状态码速查表状态码范围类别说明常见示例1xx (100-199)信息提示临时响应极少遇到100 Continue大文件上传2xx (200-299)成功请求已成功处理✅ 200 OK正常返回3xx (300-399)重定向需要进一步操作 301永久重定向 302临时重定向4xx (400-499)客户端错误问题出在请求方 403权限不足 404文件不存在 401需要认证5xx (500-599)服务器错误问题出在后端 502 Bad Gateway后端不可达 504 Gateway Timeout响应超时 500 Internal Server Error后端代码错误8. 故障排查技巧检查配置文件语法nginx-t查看错误日志tail-f/usr/local/nginx/logs/error.log测试负载均衡# 使用 ab 工具测试ab-c10-n100http://www.westos.org/# 查看后端服务器访问日志tail-f/var/log/nginx/access.log验证模块加载nginx-V21|grepsticky检查端口监听netstat-tlnp|grepnginx

相关新闻

3分钟搞定网页视频下载难题:猫抓浏览器扩展完全指南

3分钟搞定网页视频下载难题:猫抓浏览器扩展完全指南

3分钟搞定网页视频下载难题:猫抓浏览器扩展完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情况&#…

2026/8/1 7:46:43阅读更多 →
C#并发编程实战:ConcurrentDictionary线程安全字典原理与应用

C#并发编程实战:ConcurrentDictionary线程安全字典原理与应用

1. 从单打独斗到并肩作战&#xff1a;为什么我们需要线程安全的字典&#xff1f;在C#的世界里&#xff0c;Dictionary<TKey, TValue>几乎是每个开发者最早接触、也最常用的集合类型之一。它就像一个高效的私人管家&#xff0c;帮你把数据&#xff08;值&#xff09;和对应…

2026/8/1 7:44:43阅读更多 →
古籍数字化技术实践:多语言OCR与翻译协作流程解析

古籍数字化技术实践:多语言OCR与翻译协作流程解析

这次我们来看一个特殊的数字人文项目——《Ars Astronomica》&#xff0c;它专注于将罕见的天文学古籍进行数字化和翻译。这个项目由学术团队主导&#xff0c;重点不是技术栈多复杂&#xff0c;而是如何让16世纪的希伯来语和拉丁语天文学著作能被现代英语读者直接访问。如果你关…

2026/8/1 7:44:43阅读更多 →
Duilib入门指南:轻量级C++桌面UI开发框架实践

Duilib入门指南:轻量级C++桌面UI开发框架实践

1. 从零开始&#xff1a;为什么选择Duilib作为桌面UI开发框架 如果你是一名Windows平台的C开发者&#xff0c;并且厌倦了MFC那套略显陈旧的界面开发方式&#xff0c;或者觉得Qt虽然强大但体量稍大、授权协议在某些场景下让你有所顾虑&#xff0c;那么你很可能已经听说过或者正在…

2026/8/1 9:03:04阅读更多 →
开关电源四大保护电路设计:过热、过流、过压与软启动实战指南

开关电源四大保护电路设计:过热、过流、过压与软启动实战指南

1. 项目概述&#xff1a;为什么开关电源保护电路是设计的“生命线”干了十几年电源设计&#xff0c;从消费电子到工业设备都摸过一遍&#xff0c;我越来越觉得&#xff0c;一个开关电源的性能指标再漂亮&#xff0c;如果保护电路没做好&#xff0c;那基本就等于在悬崖边上跳舞。…

2026/8/1 9:03:04阅读更多 →
大模型应用上线就崩?权限和日志才是真实分水岭

大模型应用上线就崩?权限和日志才是真实分水岭

聊《程序员职业规划为什么越规划越焦虑&#xff1f;问题可能不在路线》之前&#xff0c;先说一句实在的&#xff1a;别急着背概念&#xff0c;先看它在真实项目里到底解决什么问题。摘要上个月帮一个创业团队做架构评审&#xff0c;前端同学拿着 Demo 来找我们&#xff0c;说 C…

2026/8/1 9:03:04阅读更多 →
4岁儿童声乐启蒙训练方法与工具推荐

4岁儿童声乐启蒙训练方法与工具推荐

1. 为什么4岁是声乐启蒙的黄金期 四岁儿童正处于大脑发育和语言能力快速发展的关键阶段。这个年龄段的孩子听觉敏锐度达到人生顶峰&#xff0c;能够分辨出成年人难以察觉的细微音高变化。从神经科学角度看&#xff0c;4岁儿童大脑中的听觉皮层和运动皮层正在建立密集的连接网络…

2026/8/1 9:03:04阅读更多 →
2026年靠谱的AI论文写作辅助平台,新手小白也能快速上手

2026年靠谱的AI论文写作辅助平台,新手小白也能快速上手

在撰写期刊论文、毕业论文或职称论文时&#xff0c;很多学术人员都会遇到不少困难。尤其是用人工写作时&#xff0c;面对海量的文献资料&#xff0c;寻找相关内容就像在大海里找针&#xff0c;耗时又费力&#xff1b;再加上各种复杂且严苛的格式规范&#xff0c;常常弄得人手忙…

2026/8/1 9:03:04阅读更多 →
手机卡托又薄又小还高光,嘉腾闪测仪把多参数检测做到秒级批量完

手机卡托又薄又小还高光,嘉腾闪测仪把多参数检测做到秒级批量完

手机卡托生产车间里&#xff0c;一批批卡托从注塑机或CNC机台下来&#xff0c;等着检测。卡托外形尺寸偏了0.05mm&#xff0c;插不进手机中框&#xff1b;卡槽宽度超差&#xff0c;SIM卡装进去晃荡&#xff1b;顶针孔位置偏了&#xff0c;取卡针捅不进去。卡托尺寸虽小&#xf…

2026/8/1 9:01:04阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

&#x1f539; 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具&#xff0c;凭借本地离线运行、可视化图形操作和任务自动化三大核心特性&#xff0c;赢得了众多用户的青睐。与普通在线对话AI工具不同&#xff0c;它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接&#xff0c;是用激光束对阀座壳体&#xff08;通常为不锈钢或铝合金&#xff09;进行密封焊接&#xff0c;使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX&#xff1a;三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南&#xff1a;如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域&#xff0c;视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时&#xff0c;光是文献检索就花了整整两周时间&#xff0c;打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化&#xff0c;合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统&#xff1a;从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南&#xff1a;如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域&#xff0c;视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时&#xff0c;光是文献检索就花了整整两周时间&#xff0c;打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化&#xff0c;合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统&#xff1a;从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →