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

如何配置NGINX作为反向代理服务器来缓存后端服务的响应?

大家好,我是锋哥。今天分享关于【如何配置NGINX作为反向代理服务器来缓存后端服务的响应?】面试题。希望对大家有帮助;

如何配置NGINX作为反向代理服务器来缓存后端服务的响应?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

要配置 NGINX 作为反向代理服务器并缓存后端服务的响应,可以按照以下步骤进行操作:

1. 安装 NGINX

首先,确保 NGINX 已经安装在你的服务器上。如果还没有安装,可以使用以下命令:

Debian/Ubuntu:

sudo apt update
sudo apt install nginx

CentOS/RHEL:

sudo yum install nginx

2. 配置反向代理

接下来,你需要编辑 NGINX 配置文件,配置反向代理服务。默认情况下,NGINX 配置文件位于 /etc/nginx/nginx.conf,或在 /etc/nginx/sites-available/ 目录下。

编辑配置文件(假设配置文件路径是 /etc/nginx/sites-available/default):

sudo nano /etc/nginx/sites-available/default

server 块中配置反向代理,并添加缓存相关指令:

server {listen 80;server_name yourdomain.com;location / {proxy_pass http://backend_server_ip_or_domain;  # 后端服务地址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;# 启用缓存proxy_cache my_cache;proxy_cache_valid 200 1h;  # 设置200响应的缓存时间为1小时proxy_cache_valid 404 1m;  # 设置404响应的缓存时间为1分钟proxy_cache_use_stale error timeout updating;  # 如果后端服务不可用,使用陈旧缓存proxy_cache_revalidate on;  # 启用缓存重验证}
}

3. 配置缓存

在 NGINX 配置文件中,你需要定义缓存的路径和缓存区域。你可以在 http 块中设置缓存路径:

http {# 配置缓存区域proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;# 其他配置...
}
  • /var/cache/nginx: 缓存文件存储路径。
  • keys_zone=my_cache:10m: 定义一个名为 my_cache 的缓存区域,大小为 10MB。
  • max_size=1g: 缓存的最大空间为 1GB。
  • inactive=60m: 如果缓存中某个文件超过 60 分钟未被访问,则会被清除。
  • use_temp_path=off: 禁止使用临时路径存储缓存文件。

4. 设置缓存清理策略

你可以根据实际需求设置缓存清理策略。例如,设置不同状态码响应的缓存有效期,常见的策略如下:

proxy_cache_valid 200 1h;  # 200 状态码的缓存有效期为1小时
proxy_cache_valid 301 302 1d;  # 重定向状态码的缓存有效期为1天
proxy_cache_valid 404 1m;  # 404 状态码的缓存有效期为1分钟

5. 测试配置和重载 NGINX

配置完成后,可以使用以下命令测试 NGINX 配置是否正确:

sudo nginx -t

如果没有错误,重新加载 NGINX 使配置生效:

sudo systemctl reload nginx

6. 查看缓存内容

缓存文件将存储在 /var/cache/nginx 目录中。你可以定期检查该目录,查看缓存文件的状态。

7. 配置客户端缓存(可选)

如果你希望客户端也缓存某些内容,可以通过添加 Cache-Control 头部来实现:

location / {proxy_pass http://backend_server;proxy_set_header Cache-Control "public, max-age=3600";  # 客户端缓存1小时
}

通过以上配置,NGINX 将会作为反向代理服务器,将请求转发到后端服务,同时缓存返回的响应,减少后续请求的负载和响应时间。

相关文章:

如何配置NGINX作为反向代理服务器来缓存后端服务的响应?

大家好,我是锋哥。今天分享关于【如何配置NGINX作为反向代理服务器来缓存后端服务的响应?】面试题。希望对大家有帮助; 如何配置NGINX作为反向代理服务器来缓存后端服务的响应? 1000道 互联网大厂Java工程师 精选面试题-Java资源…...

【Java IO流】File类基础详解

参考笔记:java File类基础 万字详解(通俗易懂)-CSDN博客 目录 1.前言 2. File类介绍 3. File类构造方法 4.File类常用的方法案例演示 4.1 创建文件/文件夹的方法 4.2 删除文件/文件夹的方法 4.3 判断文件/文件夹是否存在的方法 4.4 …...

《C#数据结构与算法》—201线性表

线性表的实现方式 顺序表 线性表的顺序存储是指在内存中用一块地址连续的空间依次存放线性表的数据元素,用这种方式存储的线性表叫顺序表。 特点:表中相邻的数据元素在内存中存储位置也相邻。 顺序表接口实现: 方法名参数返回值描述GetLen…...

MATLAB绘制局部放大图

今天,我将分享一段 MATLAB 代码,该代码生成了一个主副图结合的可视化展示,用于比较不同控制系统性能表现。 clc; clear; close all;% 生成时间向量 t 0:0.1:12;% 生成模拟数据 zero_feedback 0.5 * ones(size(t)); % 恒定…...

TS 常用类型

JS不会检查变量类型的变化 给变量规定特定的数据类型,错误赋值时会报错 优势:TS会标记出代码中的意外行为,尤其是typeerrors 具体实现:类型注解 JS和TS中数据类型的变化...

[Control-Chaos] Toxic Cascade(毒性級鏈)

信息 信息描述靶場名稱Toxic Cascade地址GitHub: Toxic Cascade難度中等人數推薦1人類型CTF、APT 攻擊模擬、故事解謎、化工工程與逆向工程描述Toxic Cascade 是一個結合 CTF、APT 攻擊模擬、故事解謎、化工工程與逆向工程的高度沉浸式靶場。該靶場具有獨特的情境背景與模擬真…...

纳米AI搜索体验:MCP工具的实际应用测试,撰写报告 / 爬虫小红书效果惊艳

1. 引言 近期测试了纳米AI搜索的MCP工具功能,重点体验了其智能体在报告生成和社交媒体数据分析方面的表现。平台整合了100多个MCP工具,通过本地化部署的方式,为用户提供了不同于云端方案的操作体验。本文将分享实际测试结果,包括智…...

React useMemo函数

第一个参数是回调函数,返回计算的结果,第二个参数是依赖项,该函数只监听count1变量的变化 import { useReducer, useState } from react; import ./App.css;// 定义一个Reducer函数 根据不同的action进行不同的状态修改 function reducer(st…...

第 1 篇:起点的选择:为何需要超越数组与链表?

大家好,欢迎来到“数据结构选型指南”系列!在软件开发中,数据是核心,而如何高效地组织和访问这些数据,则是程序性能的关键。选择合适的数据结构,就像为你的 Java 应用选择最优的“引擎零件”。今天&#xf…...

MySQL 索引不生效的情况

MySQL 索引不生效的 SQL 查询需要避免的情况 索引是提高 MySQL 查询性能的关键&#xff0c;但某些 SQL 写法会导致索引失效&#xff0c;从而影响查询效率。以下是需要避免的常见情况&#xff1a; 1. 使用 NOT、! 或 <> 操作符 -- 索引可能失效 SELECT * FROM users WH…...

【阿里云大模型高级工程师ACP学习笔记】2.9 大模型应用生产实践 (上篇)

特别说明:由于这一章节是2025年3月官方重点更新的部分,新增内容非常多,因此我不得不整理成上、下两篇,方便大家参考。 学习目标 备考阿里云大模型高级工程师ACP认证,旨在全面掌握大模型应用生产实践的专业知识,提升在该领域的实操技能与理论水平,为职业发展增添助力。具…...

STM32 ZIBEE DL-20 无线串口模块

一.配置方法 二.串口中断 u8 i; u16 buf[20],res; u8 receiving_flag 0; // 新增一个标志&#xff0c;用于标记是否开始接收数组 void USART1_IRQHandler(void) {if(USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) //接收中断{res USART_ReceiveData(USART1);if(receiv…...

【算法基础】选择排序算法 - JAVA

一、算法基础 1.1 什么是选择排序 选择排序是一种简单直观的排序算法&#xff0c;它的工作原理是&#xff1a;首先在未排序序列中找到最小&#xff08;或最大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后再从剩余未排序元素中继续寻找最小&#xf…...

FastAPI 与数据库交互示例

目录 安装必要的包完整代码示例运行应用使用说明API 端点说明代码解析 下面将创建一个简单的 FastAPI 应用程序&#xff0c;演示如何与 SQLite 数据库进行交互。这个例子包括创建、读取、更新和删除&#xff08;CRUD&#xff09;操作。 安装必要的包 首先&#xff0c;需要安装…...

(六——下)RestAPI 毛子(Http resilience/Refit/游标分页)

文章目录 项目地址一、Refit1.1 安装需要的包1.2 创建接口IGitHubApi1.3 创建RefitGitHubService1. 实现接口2. 注册服务 1.4 修改使用方法 二、Http resilience2.1 安装所需要的包2.2 创建resilience pipeline简单版2.3 创建全局的resilience处理1. 创建清理全局ResilienceHan…...

Rust 学习笔记:关于枚举与模式匹配的练习题

Rust 学习笔记&#xff1a;关于枚举与模式匹配的练习题 Rust 学习笔记&#xff1a;关于枚举与模式匹配的练习题以下程序能否通过编译&#xff1f;若能&#xff0c;输出是什么&#xff1f;考虑这两种表示结果类型的方式&#xff0c;若计算成功&#xff0c;则包含值 T&#xff1b…...

父子组件双向绑定

v-model 语法糖实现 vue中我们在input中可以直接使用v-model来完成双向绑定,这个时候 v-model 通常会帮我们完成两件事: v-bind:value的数据绑定@input的事件监听如果我们现在封装了一个组件,其他地方在使用这个组件时,是否也可以使用v-model来同时完成这两个功能呢? 当我…...

系统思考与第一性原理

最近一直有客户提到“第一性原理”&#xff0c;希望借此穿透纷繁复杂的现象&#xff0c;看清事情的本质。我第一反应是&#xff1a;这与系统思考中的冰山模型不谋而合。 冰山模型中提到&#xff1a;我们看到的只是表面事件&#xff0c;事件背后有趋势&#xff0c;趋势背后有结…...

基于Redis实现-UV统计

基于Redis实现-UV统计 本文将使用HyperLogLog来实现UV统计。 首先我们搞懂两个概念&#xff1a; UV&#xff1a;全称Unique Visitor&#xff0c;也叫独立访客量&#xff0c;是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站&#xff0c;只记录一次…...

【iOS】类与对象底层探索

类与对象底层探索 Clang探索对象本质objc_setProperty源码探索cls与类的关联原理isa的类型isa_t原理探索 类&类的结构什么是元类NSObject到底有几个isa走位&继承关系图objc_class&objc_object 类结构分析计算cache类中的内存大小获取bits属性列表&#xff08;prope…...

2025年- H18-Lc126-54.螺旋矩阵(矩阵)---java版

1.题目描述 2.思路* 思路1&#xff1a; 补充2&#xff1a; directions[1][0] // 表示“下”这个方向的行增量&#xff08;1&#xff09; directions[1][1] // 表示“下”这个方向的列增量&#xff08;0&#xff09; int[][] directions {{0, 1}, {1, 0}, {0, -1}, {-…...

Paddle Serving|部署一个自己的OCR识别服务器

前言 之前使用C部署了自己的OCR识别服务器&#xff0c;Socket网络传输部分是自己写的&#xff0c;回过头来一看&#xff0c;自己犯傻了&#xff0c;PaddleOCR本来就有自己的OCR服务器项目&#xff0c;叫PaddleServing&#xff0c;这里记录一下部署过程。 1 下载依赖环境 1.1 …...

yolov5 本地训练

YOLOv5 | Kaggle 直接gitclone他的源码用Vscode看&#xff08;也可以直接把jupyter下下来&#xff09; 他要1.8&#xff0c;我的是2.7&#xff0c;他这个代码可能有点年头了 两年前了 他的环境 我的环境 我就是不懂为什么清华源的torch windows默认下出来是cpu版本 . 在终端…...

同城跑腿小程序帮取帮送接单抢单预约取件智能派单同城配送全开源运营版源码优创

一、源码描述 这是一套同城跑腿小程序&#xff0c;基于FastadminUniapp框架&#xff0c;全开源无加密&#xff0c;可私有化部署&#xff0c;包含用户端、骑手端和运营端&#xff08;后端&#xff09;&#xff0c;支持帮取/帮送模式&#xff0c;支持一键接单/抢单&#xff0c;主…...

基于SpringBoot的药房药品销售管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

机器学习中的学习率及其衰减方法全面解析

摘要&#xff1a; 本文深入解析机器学习中的学习率及其衰减方法&#xff0c;涵盖学习率的作用、常用衰减参数及七种主流衰减策略&#xff08;分段常数、指数、自然指数、多项式、余弦、线性余弦、噪声线性余弦&#xff09;。通过公式推导与图示对比&#xff0c;揭示不同衰减方式…...

硬件性能与能效比竞赛:解码 PC 硬件的 “速度与激情”

引言&#xff1a;当性能遇见能效&#xff0c;一场永不停歇的算力革命 在数字内容爆炸式增长的时代&#xff0c;无论是 4K/8K 游戏的极致画质追求&#xff0c;还是 AI 大模型的本地化部署需求&#xff0c;亦或是内容创作者对实时渲染的效率渴求&#xff0c;都在推动 PC 硬件走向…...

大模型在终末期肾脏病风险预测与临床方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 1.3 研究方法与数据来源 二、终末期肾脏病概述 2.1 定义与诊断标准 2.2 发病机制与影响因素 2.3 现状与危害 三、大模型技术原理及应用现状 3.1 大模型基本原理 3.2 在医疗领域应用案例 3.3 在终末期肾脏病…...

【C++11】智能指针

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲C11——智能指针&#xff1a; &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C学习笔记 &#x1f380;CSDN主页 愚润求学 &#x1f304;其他专栏&#xff1a;C语言入门基础&#xff0c;pyt…...

华为云Astro轻应用利用自定义连接器调用第三方接口实际操作

样图 说明 华为云Astro轻应用通过自定义连接器调用第三方接口具有多方面的作用,主要体现在以下几点: 扩展功能与集成能力 调用第三方服务:通过配置自定义连接器,Astro轻应用可以调用第三方提供的Rest协议接口,实现第三方提供的业务功能,扩展应用的能力。 集成外部系统:…...

【中间件】brpc_基础_butex.h

butex.h 学习笔记 源码 1 概述 butex.h 提供了一种用户态同步原语 butex&#xff08;类似 Linux 的 futex&#xff09;&#xff0c;专为 bthread 设计&#xff0c;用于高效协调线程的阻塞与唤醒。其核心是通过原子操作结合等待队列管理&#xff0c;减少内核态切换开销&#…...

数字智慧方案5876丨智慧交通枢纽智能化系统建设方案(56页PPT)(文末有下载方式)

篇幅所限&#xff0c;本文只提供部分资料内容&#xff0c;完整资料请看下面链接 https://download.csdn.net/download/2301_78256053/89575493 资料解读&#xff1a;智慧交通枢纽智能化系统建设方案 详细资料请看本解读文章的最后内容。 随着城市化进程的加速&#xff0c;交…...

深度学习笔记40_中文文本分类-Pytorch实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 一、我的环境 1.语言环境&#xff1a;Python 3.8 2.编译器&#xff1a;Pycharm 3.深度学习环境&#xff1a; torch1.12.1cu113torchvision…...

python设置word字体的方法

在Python中&#xff0c;可以使用python-docx库来设置Word文档的字体样式&#xff0c;以下为具体方法和示例代码&#xff1a; 一、设置段落中字体样式 使用python-docx库时&#xff0c;Word文档中的文本通常被组织成段落&#xff08;Paragraph对象&#xff09;&#xff0c;而一…...

golang常用库之-标准库text/template

文章目录 golang常用库之-标准库text/template背景什么是text/templatetext/template库的使用 golang常用库之-标准库text/template 背景 在许多编程场景中&#xff0c;我们经常需要把数据按照某种格式进行输出&#xff0c;比如生成HTML页面&#xff0c;或者生成配置文件。这…...

【JAVA】如何快速阅读一个基于maven构建的springboot项目

一、摘要 在JAVA项目开发过程中&#xff0c;现在比较流行的是springboot机构&#xff0c;特别是在后端开发的项目中&#xff0c;springboot应用的非常普遍。springboot很好将大型的、复杂的项目进行分解&#xff0c;以模块或者服务的表现形式组成项目。那么当我们接手一个陌生的…...

Fedora升级Google Chrome出现GPG check FAILED问题解决办法

https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公钥(0x7FAC5991)已安装 https://dl.google.com/linux/linux_signing_key.pub 的 GPG 公钥(0xD38B4796)已安装 仓库 "google-chrome" 的 GPG 公钥已安装&#xff0c;但是不适用于此软件包。 请检查此仓库的…...

深入解析MapReduce:大数据处理的经典范式

引言 在大数据时代&#xff0c;如何高效处理海量数据成为技术核心挑战之一。Hadoop生态中的MapReduce框架应运而生&#xff0c;以其“分而治之”的思想解决了大规模数据的并行计算问题。本文将从原理、核心组件到实战案例&#xff0c;带你全面理解这一经典计算模型。 一、MapR…...

JVM性能调优的基础知识 | JVM内部优化与运行时优化

目录 JVM内部的优化逻辑 JVM的执行引擎 解释执行器 即时编译器 JVM采用哪种方式&#xff1f; 即时编译器类型 JVM的分层编译5大级别&#xff1a; 分层编译级别&#xff1a; 热点代码&#xff1a; 如何找到热点代码&#xff1f; java两大计数器&#xff1a; OSR 编译…...

云计算-容器云-部署jumpserver 版本2

应用部署&#xff1a;堡垒机部署 # 使用提供的软件包配置Yum源&#xff0c;通过地址将jumpserver.tar.gz软件包下载至Jumpserver节点的/root目录下 [rootjumpserver ~]# tar -zxvf jumpserver.tar.gz -C /opt/ [rootjumpserver ~]# cp /opt/local.repo /etc/yum.repos.d/ [roo…...

MSP430G2553驱动0.96英寸OLED(硬件iic)

1.前言 最近需要用MSP430单片机做一个大作业,需要用到OLED模块&#xff0c;在这里记录一下 本篇文章主要讲解MSP430硬件iic的配置和OLED函数的调用&#xff0c;不会详细讲解OLED显示原理(其实就是江科大的OLED模块如何移植到msp430上).OLED显示原理以及底层函数讲解请参考其他…...

同质化的旅游内核

湘西凤凰古城、北京非常有文艺氛围的方家胡同都在被改造翻新为现代的其他城市范式式的样式。 什么意思呢&#xff1f;很多古城的老房子&#xff0c;从外面看&#xff0c;很古老、很漂亮&#xff0c;但是进去以后&#xff0c;完全不是那么回事&#xff0c;整座房子已经被完全掏…...

2025年五一数学建模A题【支路车流量推测】原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2025年五一数学建模A题【支路车流量推测】完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 A题论文共104页&a…...

文章六:《循环神经网络(RNN)与自然语言处理》

文章6&#xff1a;循环神经网络&#xff08;RNN&#xff09;与自然语言处理——让AI学会"说人话" 引言&#xff1a;你的手机为什么能秒懂你&#xff1f; 当你说"我想看科幻片"时&#xff0c;AI助手能立刻推荐《星际穿越》&#xff0c;这背后是RNN在"…...

Redis总结及设置营业状态案例

Redis简介: rRedis服务开启与停止: 服务开启: 在Redis配置文件中输入cmd进入命令行输入redis-server redis-cli.exe -h -p&#xff1a;连接到redis服务 设置密码:在redis.windows.conf中找到requirepass 密码 服务停止&#xff1a; 在服务开启的界面按ctrlc Redis数据类…...

中科大:LLM几何推理数据生成

&#x1f4d6;标题&#xff1a;Enhancing the Geometric Problem-Solving Ability of Multimodal LLMs via Symbolic-Neural Integration &#x1f310;来源&#xff1a;arXiv, 2504.12773 &#x1f31f;摘要 &#x1f538;多模态大语言模型&#xff08;MLLM&#xff09;的最…...

AimRT从入门到精通 - 04RPC客户端和服务器

一、ROS中的service通信机制 服务通信也是ROS中一种极其常用的通信模式&#xff0c;服务通信是基于请求响应模式的&#xff0c;是一种应答机制。也即&#xff1a;一个节点A向另一个节点B发送请求&#xff0c;B接收处理请求并产生响应结果返回给A。比如如下场景&#xff1a; 机器…...

【Android】Intent

目录 一、什么是Intent 二、显式Intent 三、隐式Intent 四、复杂数据传递 五、跨应用权限管理 六、常见问题 一、什么是Intent 1. 跨组件通信桥梁 实现组件间通信&#xff08;Activity/Service/BroadcastReceiver&#xff09;封装操作指令与数据传输逻辑 目标组件启动…...

从0开始建立Github个人博客(hugoPaperMod)

从0开始建立Github个人博客(hugo&PaperMod) github提供给每个用户一个网址&#xff0c;用户可以建立自己的静态网站。 一、Hugo hugo是一个快速搭建网站的工具&#xff0c;由go语言编写。 1.安装hugo 到hugo的github标签页Tags gohugoio/hugo选择一个版本&#xff0c…...

Python集合全解析:从基础到高阶应用实战

一、集合核心特性与创建方法 1.1 集合的本质特征 Python集合&#xff08;Set&#xff09;是一种​​无序且元素唯一​​的容器类型&#xff0c;基于哈希表实现&#xff0c;具有以下核心特性&#xff1a; ​​唯一性​​&#xff1a;自动过滤重复元素​​无序性​​&#xff…...