Nginx负载均衡之反向代理缓存服务器配置

        Nginx 代理功能根据应用方式的不同分为正向代理和反向代理,Nginx 开源版本的正向代理功能并不完整,不支持 HTTP 的 CONNECT 方法,所以 HTTPS 的正向代理功能通常是使用第三方模块来实现的。
        Nginx 的 HTTPS 正向代理使用最多的第三方模块是 ngx_http_proxy_connect_module,但其不支持缓存,所以开源版本 Nginx 无法在正向代理缓存的使用场景中应用。
        Nginx 的重点缓存应用是在反向代理缓存的应用场景,官方也一直在不断地增强该功能。Nginx 反向代理缓存是目前网站架构中最常用的缓存方式,其不仅被网站架设者用以提高访问速度,降低应用服务器的负载,同时也被广泛应用于 CDN 的缓存服务器中。

Nginx的反向代理缓存有以下几个功能特点。

  • 故障降级。如果源服务器因故障停机,即便缓存过期,也可以被返回给用户使用,这就避免了页面无法打开的故障信息传递,从而实现有效容错降级;
  • 缓存负载。基于Nginx提供的比例分配赋值指令,可以将请求分配给由多个不同的硬盘组成的缓存池,以实现缓存存储负载,降低I/O瓶颈,提升磁盘效率;
  • 缓存锁。使多个相同的请求只有一个可以访问被代理服务器,其他的请求则等待缓存生成后,从缓存中获取响应数据,从而有效地提升缓存利用率,降低被代理服务器的负载;
  • 缓存验证支持。支持在Nginx本地缓存有效期过期后,通过服务器远端验证的方式确认缓存是否有效;
  • 范围请求支持。通过切片指令设置,提升了范围请求的缓存效率,使其响应速度更快;
  • 缓存控制。可对用户的请求是否使用缓存、响应数据是否被缓存、可被缓存的最低使用频率等方式实现缓存控制。

配置样例如下:

upstream backend_server {ip_hash;                                 # session会话保持server 192.168.2.145:8081;               # 被代理服务器IPserver 192.168.2.159:8081;               # 被代理服务器IP
}proxy_cache_path /usr/local/nginx/nginx-cache1levels=1:2keys_zone=cache_hdd1:100mmax_size=10guse_temp_path=offinactive=60m;    # 设置缓存存储路径1,缓存的共享内存名称和大小100MB,# 无效缓存的判断时间为1小时proxy_cache_path /usr/local/nginx/nginx-cache2levels=1:2keys_zone=cache_hdd2:100mmax_size=10guse_temp_path=offinactive=60m;    # 设置缓存存储路径2,缓存的共享内存名称和大小100MB,# 无效缓存的判断时间为1小时split_clients $request_uri $proxy_cache {50%          "cache_hdd1";     # 50%请求的缓存存储在第一个磁盘上50%          "cache_hdd2";     # 50%请求的缓存存储在第二个磁盘上
}server {listen 8080;root /opt/nginx-web/phpweb;index index.php;include        proxy.conf;               # 引入默认配置文件location ~ \.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {# 设置客户端静态资源文件缓存过期时间为12小时expires      12h;}proxy_ignore_headers Cache-Control Set-Cookie;# 忽略被代理服务器返回响应头中指定字段的控制响应location ~ / {root /opt/nginx-web/phpweb;proxy_cache $proxy_cache;     # 启用proxy_cache_path设置的$proxy_cache的共享内存区域proxy_cache_lock on;          # 启用缓存锁proxy_cache_lock_age 5s;      # 缓存锁有效期为5sproxy_cache_lock_timeout 5s;  # 等待缓存锁超时时间为5sproxy_cache_methods GET HEAD; # 默认对GET及HEAD方法的请求进行缓存proxy_cache_min_uses 1;       # 响应数据至少被请求1次,才将被缓存proxy_cache_bypass $http_pragma;    # 当客户端请求头包含字段pragma时,不适用缓存proxy_cache_use_stale error timeout invalid_headerupdating http_500 http_503http_403 http_404 http_429;# 当出现指定条件时,使用已经过期的缓存响应数据proxy_cache_background_update on;   # 允许使用过期的响应数据时,启用后台子请求用以更新过# 期缓存,并将过期的缓存响应数据返回给客户端proxy_cache_revalidate on;          # 当缓存过期时,向后端服务器发起服务端校验proxy_cache_valid 200 301 302 10h;  # 200 301 302状态码的响应缓存10小时proxy_cache_valid any 1m;           # 其他状态码的响应缓存1分钟add_header X-Cache-Status $upstream_cache_status;# 添加缓存请求状态标识proxy_pass   http://backend_server;}error_page 404 /404.html;error_page 500 502 503 504 /50x.html;
}

         在默认配置下,Nginx 会对被代理服务器返回响应数据信息头的缓存控制字段 Cache-Control 执行相关操作。当 Cache-Control 字段的值为 private、no-cache 或者有字段 Set-Cookie 时,它会对响应数据缓存产生影响,可以使用 proxy_ignore_headers 指令忽略这些字段的操作响应。

proxy_ignore_headers Cache-Control Set-Cookie;

        Nginx 默认只对 GET 和 HEAD 方法的请求进行缓存,如果想对 POST 请求方法的数据进行缓存,则可以使用 proxy_cache_methods 指令进行设置。

proxy_cache_methods GET HEAD POST;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/30540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同时使用磁吸充电器和Lightning时,iPhone充电速度会变快吗?

在智能手机的世界里,续航能力一直是用户关注的焦点。苹果公司以其创新的MagSafe技术和传统的Lightning接口,为iPhone用户提供了多样化的充电解决方案。 然而,当这两种技术同时使用时,它们能否带来更快的充电速度?本文…

力扣(2024.06.19)

1. 42——接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 标签:数组,双指针 代码: class Solution:def trap(self, height: List[int]) -> int:max_left…

Talk|新加坡国立大学贾鑫宇:适用于高自由度机器人的运动控制器

本期为TechBeat人工智能社区第600期线上Talk。 北京时间6月13日(周四)20:00,新加坡国立大学博士生—贾鑫宇的Talk已经准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “适用于高自由度机器人的运动控制器”,向大家系统地介绍了如何通…

千脑计划:模拟人类大脑皮层,开启AI新纪元

随着科技的飞速发展,人工智能已成为当今时代的热门话题。然而,目前主流的深度神经网络虽然取得了显著成就,但也面临着能耗高、稳定性差等问题。为了解决这些挑战,一项名为“千脑计划”的宏伟项目应运而生,旨在通过模仿…

实数系和复数系-习题

出去有明确的相反的说明以外,本习题中所提到的数,都理解为实数 1.如果 r ( r ≠ 0 ) r\left( r\neq 0 \right) r(r0)是有理数而 x x x是无理数,证明 r x r x rx及 r x rx rx是无理数 证明: 假设 r x r x rx是有理数&#x…

数据结构:4.1.1二叉搜素树及查找

静态查找:要找的集合的元素是不动的,主要是find操作,没有delete操作 动态查找:要查找的集合会经常发生插入删除的操作 静态查找的一个很好的方法就是二分查找 把数据直接放在树上 结点右子树的值>结点的值>结点左子树的…

nRF Connect固件升级 OTA DFU Library for Mac and iOS, compatible with nRF5x SoCs

参考链接: NordicSemiconductor/IOS-DFU-Library - github

学习使用js和jquery修改css路径,实现html页面主题切换功能

学习使用js和jquery修改css路径&#xff0c;实现html页面主题切换功能 效果图html代码jquery切换css关键代码js切换css关键代码 效果图 html代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>修改css路径</title&g…

段式存储底层原理

段式存储管理&#xff08;Segmented Storage&#xff09;是一种内存管理技术&#xff0c;它允许程序以逻辑段&#xff08;Segment&#xff09;为单位来组织数据和代码&#xff0c;而不是像页式存储那样以固定大小的页来组织。段式存储提供了更大的灵活性&#xff0c;因为段可以…

openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现

文章目录 openGauss学习笔记-299 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQLdiag慢SQL发现299.1 概述299.2 使用指导299.2.1 前提条件299.2.2 SQL流水采集方法299.2.3 操作步骤299.2.4 使用方法示例299.3 获取帮助299.4 命令参考299.5 常见问题处理openGauss学…

几种常见的排序算法及其特性

当谈到排序算法时&#xff0c;有许多经典的算法被广泛应用。以下是几种常见的排序算法及其特性&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09; 特性&#xff1a;通过重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交…

Hive分区和分桶

分区&#xff1a; 根据某一列进行进行划分存储&#xff0c;常用的有时间分区&#xff1b; 查询数据时只需要扫描特定的分区数据&#xff0c;不需要全盘扫描&#xff0c;节省时间, 方便数据归档和清理 创建分区表 create table table_name( col1 int, col2 string ) partition …

管道保温的介绍

通风空调管道及各种水管的保温材料主要有&#xff1a;聚氨酯泡沫塑料保温、高级橡塑保温、酚醛泡沫塑料保温等。现对以上材料的特性、适用范围、施工要点等进行介绍&#xff0c;以供各位借鉴。 01 常用的绝热材料 1、聚氨酯泡沫塑料保温 该材料用于直埋管段的保温。在工程中…

Centos-Php-Nginx

安装Nginx&#xff08;如果尚未安装&#xff09;&#xff1a; sudo yum install nginx启动Nginx服务&#xff1a; sudo systemctl start nginx设置Nginx开机自启&#xff08;可选&#xff09;&#xff1a; sudo systemctl enable nginx安装PHP和PHP-FPM&#xff1a; sudo yum i…

网络安全:入侵检测系统的原理与应用

文章目录 网络安全&#xff1a;入侵检测系统的原理与应用引言入侵检测系统简介IDS的工作原理IDS的重要性结语 网络安全&#xff1a;入侵检测系统的原理与应用 引言 在我们的网络安全系列文章中&#xff0c;我们已经涵盖了从SQL注入到端点保护的多个主题。本篇文章将探讨入侵检…

ChatGPT Plus GPT-4o Claude 3 Opus合租拼车全新方式

无需自己搭建&#xff0c;登录即可用&#xff0c;国内直连访问&#xff0c;聚合多家最强大模型&#xff0c;随意选择使用。立即体验 datapipe.top 支持 OpenAI 最新 GPT-4o &#xff0c;获得快速高质量的对话&#xff0c;保证可用配额。支持多种大模型&#xff0c;GPT-4o &…

建筑工程设计乙级资质介绍

建筑工程设计乙级资质是中国住房和城乡建设部根据国家相关规定&#xff0c;对建筑设计单位在技术、经济、资源、环境等多方面综合能力的认可&#xff0c;表明该设计单位可以在限定范围内承担中型及以下规模的建筑工程设计任务。以下是乙级资质的一些核心要点介绍&#xff1a; …

XGBoost算法详解

XGBoost算法详解 XGBoost&#xff08;Extreme Gradient Boosting&#xff09;是一种高效的梯度提升决策树&#xff08;GBDT&#xff09;实现&#xff0c;因其高性能和灵活性在机器学习竞赛中广泛使用。本文将详细介绍XGBoost算法的原理&#xff0c;并展示其在实际数据集上的应…

Flutter 项目设置 Flutter 版本

即便使用了 fvm 设置了版本&#xff0c;AdroidStudio Setting 中如果不修改路径&#xff0c;Editor 依然会编译错误。目前还没看懂如何通过命令、文件来记录AdroidStudio Setting中的设置。 fvm list 来查看 flutter 路径&#xff1a;

怪物猎人物语游戏加载慢、卡加载解决方法一览

怪物猎人物语是《怪物猎人》系列史上首部RPG类型游戏。本作采用动漫式的画风风格&#xff0c;在玩法上完全不同于以往系列作&#xff0c;但本作完整的保持《怪物猎人》系列的世界观&#xff0c;依靠正统的RPG玩法给玩家带来不同以往的游戏体验。因为游戏快要上线了&#xff0c;…