如何配置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 将会作为反向代理服务器,将请求转发到后端服务,同时缓存返回的响应,减少后续请求的负载和响应时间。

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

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

相关文章

DiT:文档图像Transformer 的自监督预训练

摘要 图像transformer(Image Transformer)最近在自然图像理解方面取得了显著进展, 无论是使用监督(ViT、DeiT等)还是自监督(BEiT、MAE等)预训练技术。在本文中,我们提出了DiT&#…

51c嵌入式~电路~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/11888986 一、电流检测电路 电流检测的应用 电路检测电路常用于:高压短路保护、电机控制、DC/DC换流器、系统功耗管理、二次电池的电流管理、蓄电池管理等电流检测等场景。电路专辑 对于大部分应用&#xff…

【Git】万字详解 Git 的原理与使用(上)

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 初识 Git1.1 Git 是什么?1.2 为什么要有 Git 2. 安装 Git2.1 Linux-Ubuntu 安装 Git2.2 Windo…

【原创开发】无印去水印[特殊字符]短视频去水印工具[特殊字符]支持一键批量解析

支持:快手,抖音,小红书,哔哩哔哩,等多款应用去水印,支持图集解析下载 【应用名称】:无印 【应用版本】:1.3 【应用大小】:17M 【测试机型】:小米14 【下载链…

qemu(3) -- qemu-arm使用

1. 前言 qemu中有很多的特技,此处记录下qemu-arm的使用方式,简单来说qemu-system-xx用于虚拟整个设备,包括操作系统的运行环境,而qemu-xx仅虚拟Linux应用程序的环境,不涉及操作系统,应用程序的系统调用有宿…

Docker的简单使用(不全)

Docker Hello World Docker 允许在容器内运行应用程序,使用docker run命令来在容器内运行一个应用程序 输出Hello World runoobrunoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"Hello world docker:Docker的二进制执行文件 run…

SALOME源码分析: 命令系统

本文分析SALOME中命令系统,涉及的知识点包括, MDF框架数据对象模型 注1:限于研究水平,分析难免不当,欢迎批评指正。注2:文章内容会不定期更新。 一、命令对象 1.1 Class Hierarchy 1.2 SUIT_Operation #…

Bootstrap(自助法)​​:无需假设分布的统计推断工具

核心思想​​ Bootstrap 是一种​​重采样(Resampling)技术​​,通过在原始数据中​​有放回地重复抽样​​,生成大量新样本集,用于估计统计量(如均值、方差)的分布或模型性能的不确定性。 ​​…

沙箱逃逸(Python沙盒逃逸深度解析)

沙箱逃逸(Python沙盒逃逸深度解析) 一、沙盒逃逸的核心目标 执行系统命令 通过调用os.system、subprocess.Popen等函数执行Shell命令,例如读取文件或反弹Shell。 文件操作 读取敏感文件(如/etc/passwd)、写入后门文件…

融智学数学符号体系的系统解读(之一)

融智学数学符号体系的系统解读 一、道函数(Dao Function) 数学表达式: f(x,y,z)0(狭义) f(x,y,z,ict)0(广义) 符号解析: x: 形象思维坐标轴 数学意义: 表征基于感官输入的多模…

Java 中使用正则表达式

1. 引入包 在使用正则表达式之前,需要引入包: import java.util.regex.Matcher; import java.util.regex.Pattern; 2. 常用模式规则 元字符 :这些是正则表达式中的特殊字符,用于匹配特定的模式。 . :匹配任意单个字符(换行符除外)。例如,a.b 可以匹配 "acb&quo…

cat file.tar.gz | tar -xzf - -C /target/dir两个减号之间为什么有个空格?是写错了吗?(管道命令后续)

在 tar 命令的参数 -xzf - -C 中,两个减号(-)之间的空格是故意保留的语法,没有写错。具体原因如下: 1. -xzf - 的语法解析 -xzf 是 tar 命令的组合参数: x:表示解压(extract&#x…

Linux中的系统延时任务和定时任务与时间同步服务和构建时间同步服务器

延时任务 在系统中我们的维护工作大多数时在服务器行对闲置时进行 我们需要用延迟任务来解决自动进行的一次性的维护 延迟任务时一次性的,不会重复执行 当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者 在RHEL9中默认系统中的所有普通…

C++之IO流

目录 一、C语言的输入与输出 二、流是什么 三、CIO流 3.1、C标准IO流 3.2、C文件IO流 四、stringstream的简单介绍 一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放…

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 公钥已安装,但是不适用于此软件包。 请检查此仓库的…

极光PDF编辑器:高效编辑,轻松管理PDF文档

在日常工作和学习中,PDF文件的使用越来越普遍。无论是学术论文、工作报告还是电子书籍,PDF格式因其稳定性和兼容性而被广泛采用。然而,编辑PDF文件往往比编辑Word文档更加复杂。今天,我们要介绍的 极光PDF编辑器,就是这…

MySQL进阶(一)

一、存储引擎 1. MySQL体系结构 连接层: 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限 服务层: 第二层架构主要完成大多数的核心服务…

OpenCV 图形API(67)图像与通道拼接函数-----水平拼接(横向连接)两个输入矩阵(GMat 类型)函数concatHor()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数用于水平拼接两个 GMat 矩阵,要求输入矩阵的行数必须一致: GMat A { 1, 4,2, 5,3, 6 }; GMat B { 7, 10,8, 11,9, 12 }; GM…

1.1 点云数据获取方式——引言

图1-1-1点云建筑场景图 点云数据是指能够描述外部场景、对象表面的三维空间位置,并具有相关属性的点集,其每个离散点通常包括三维空间位置(x,y,z)以及强度、颜色等属性信息。大量分布的离散点集能够清晰而直接地描绘场景、对象的3…

[Verilog]跨时钟域数据传输解决方案

跨时钟域数据传输解决方案 摘要:跨时钟域数据传输 (Clock Domain Crossing, CDC) 是 SoC 设计中常见且关键的问题,因为现代 SoC 通常包含多个时钟域,不同模块可能运行在不同频率或相位的时钟下。跨时钟域传输数据时,如果处理不当,可能会导致亚稳态 (Metastability)…