论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
Oracle
›
Nginx系列05(负载平衡、动静分离)
Nginx系列05(负载平衡、动静分离)
勿忘初心做自己
论坛元老
|
2025-2-28 20:47:15
|
显示全部楼层
|
阅读模式
楼主
主题
1070
|
帖子
1070
|
积分
3210
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目次
Nginx 负载平衡
Nginx 动静分离
Nginx 负载平衡
概念
:负载平衡是一种将网络流量分摊到多个后端服务器(节点)上的技能,以提高系统的可用性、性能和可扩展性。通过负载平衡,Nginx 可以根据一定的算法将客户端请求分发到差别的后端服务器,避免单个服务器因负载过高而出现性能瓶颈。
原理
:Nginx 通过upstream模块定义一组后端服务器,然后在server块或location块中使用proxy_pass指令将请求代理到upstream定义的服务器组。Nginx 支持多种负载平衡算法,常见的有:
轮询(round - robin)
:依次将请求分配到后端服务器,每个服务器被选中的时机均等。
加权轮询(weighted round - robin)
:根据服务器的性能或负载能力,为每个服务器分配一个权重,权重越大的服务器被选中的概率越高。
IP 哈希(ip - hash)
:根据客户端的 IP 地点计算一个哈希值,然后根据哈希值将请求分配到特定的服务器,如许可以确保同一客户端的请求始终被路由到同一台服务器,适用于需要保持会话同等性的场景。
场景示例
:假设有 3 台后端 Web 服务器,IP 地点分别为192.168.1.100、192.168.1.101、192.168.1.102,运行的端口都是8080,通过 Nginx 进行负载平衡配置如下:
http {
upstream backend_servers {
# 使用轮询算法,默认不写算法就是轮询
server 192.168.1.100:8080;
server 192.168.1.101:8080;
server 192.168.1.102:8080;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers; # 将请求代理到upstream定义的后端服务器组
proxy_set_header Host $host; # 将客户端请求中的Host头信息传递给后端服务器
proxy_set_header X-Real-IP $remote_addr; # 将客户端的真实IP地址传递给后端服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 记录客户端的真实IP地址,当存在多个代理时,这个头信息会包含多个IP地址
proxy_set_header X-Forwarded-Proto $scheme; # 将客户端请求的协议(http或https)传递给后端服务器
}
}
}
复制代码
在这个配置中,upstream backend_servers定义了一个名为backend_servers的后端服务器组,包罗 3 台服务器。server块中的location /配置将全部请求通过proxy_pass代理到backend_servers服务器组,Nginx 会按照轮询算法将请求依次分发到 3 台后端服务器上。
Nginx 动静分离
概念
:动静分离是指将网站的静态资源(如图片、CSS、JavaScript 文件等)和动态资源(如 PHP、JSP 生成的页面,需要服务器动态计算和处置惩罚的内容)分开处置惩罚和存储。如许可以提高网站的性能和可维护性,因为静态资源可以被缓存,减少服务器的计算压力,而动态资源可以由专门的应用服务器处置惩罚。
原理
:Nginx 通过配置差别的location块来分别处置惩罚静态资源和动态资源请求。对于静态资源请求,Nginx 可以直接从当地文件系统读取并返回,同时可以配置缓存策略来提高访问速度;对于动态资源请求,Nginx 通过proxy_pass将请求转发到后端的应用服务器(如 Tomcat、PHP - FPM 等)进行处置惩罚。
场景示例
:假设网站的静态资源存放在/var/www/html/static目次,动态资源由运行在127.0.0.1:8080的 Tomcat 服务器处置惩罚,配置如下:
http {
server {
listen 80;
server_name example.com;
# 处理静态资源请求
location /static/ {
root /var/www/html; # 静态资源的根目录,结合前面的location路径,实际访问的是/var/www/html/static目录下的文件
expires 30d; # 设置静态资源的缓存过期时间为30天,浏览器在30天内再次请求相同资源时,直接从本地缓存读取,减少服务器压力
access_log off; # 关闭静态资源的访问日志记录,减少日志文件大小
}
# 处理动态资源请求
location / {
proxy_pass http://127.0.0.1:8080; # 将请求转发到后端的Tomcat服务器
proxy_set_header Host $host; # 将客户端请求中的Host头信息传递给后端服务器
proxy_set_header X-Real-IP $remote_addr; # 将客户端的真实IP地址传递给后端服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 记录客户端的真实IP地址,当存在多个代理时,这个头信息会包含多个IP地址
proxy_set_header X-Forwarded-Proto $scheme; # 将客户端请求的协议(http或https)传递给后端服务器
}
}
}
复制代码
在这个配置中,当客户端请求以/static/开头的资源时,Nginx 会直接从/var/www/html/static目次下读取文件并返回,同时设置了缓存逾期时间和关闭访问日志。当客户端请求其他资源时,Nginx 会将请求转发到127.0.0.1:8080的 Tomcat 服务器进行处置惩罚。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
勿忘初心做自己
论坛元老
这个人很懒什么都没写!
楼主热帖
新一代企业级安全OneDNS
记一次有意思的业务实现 → 单向关注是 ...
集合论第6-8章
将git仓库从submodule转换为subtree ...
redis 工具类
DNS协议
Python 开发 漏洞的批量搜索与利用.(G ...
SignalR 2 与mvc 5实现实时聊天功能 ...
反射 p1 反射机制
数字工厂介绍
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
Java
快速回复
返回顶部
返回列表