如何配置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.pswp.cn/diannao/81398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81398.shtml
英文地址,請注明出處:http://en.pswp.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)…