Nginx實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容緩存的示例代碼
在 Nginx 中實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容的緩存可以顯著提高性能,減少后端服務(wù)器的負(fù)載。以下是如何在 Nginx 中配置動(dòng)態(tài)內(nèi)容緩存的詳細(xì)步驟和示例配置。
1. 安裝 Nginx
確保你已經(jīng)安裝了 Nginx。如果沒(méi)有安裝,可以使用以下命令進(jìn)行安裝:
sudo apt-get update sudo apt-get install nginx
2. 配置緩存目錄
首先,定義一個(gè)緩存目錄,用于存儲(chǔ)緩存的數(shù)據(jù)。
示例配置:
http { # 定義緩存區(qū) proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; server { listen 80; server_name example.com; # 配置緩存 location / { proxy_pass http://backend; 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_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 301 302 10m; proxy_cache_valid 404 1m; # 添加緩存控制頭 add_header X-Proxy-Cache $upstream_cache_status; } } }
3. 參數(shù)解釋
proxy_cache_path
:定義緩存目錄的路徑、層級(jí)結(jié)構(gòu)、緩存區(qū)名稱(chēng)、最大大小和活動(dòng)時(shí)間。/var/cache/nginx
:緩存目錄路徑。levels=1:2
:緩存文件的層級(jí)結(jié)構(gòu),例如1:2
表示兩級(jí)目錄。keys_zone=my_cache:10m
:緩存區(qū)名稱(chēng)和大小,10MB。max_size=1g
:緩存的最大大小,1GB。inactive=60m
:緩存項(xiàng)在不活躍多久后會(huì)被刪除,60分鐘。use_temp_path=off
:禁用臨時(shí)文件路徑,直接寫(xiě)入緩存目錄。
proxy_cache
:?jiǎn)⒂镁彺?,指定緩存區(qū)名稱(chēng)。proxy_cache_key
:定義緩存鍵,用于唯一標(biāo)識(shí)緩存項(xiàng)。"$scheme$request_method$host$request_uri"
:緩存鍵包含協(xié)議、請(qǐng)求方法、主機(jī)名和請(qǐng)求URI。
proxy_cache_valid
:設(shè)置不同 HTTP 狀態(tài)碼的緩存時(shí)間。200 301 302 10m
:200、301 和 302 狀態(tài)碼的緩存時(shí)間為 10 分鐘。404 1m
:404 狀態(tài)碼的緩存時(shí)間為 1 分鐘。
add_header X-Proxy-Cache $upstream_cache_status
:添加一個(gè)響應(yīng)頭,顯示緩存狀態(tài)(HIT、MISS、BYPASS 等)。
4. 配置緩存忽略查詢(xún)字符串
如果需要忽略查詢(xún)字符串,可以在緩存鍵中排除查詢(xún)字符串。
示例配置:
http { # 定義緩存區(qū) proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; server { listen 80; server_name example.com; # 配置緩存 location / { proxy_pass http://backend; 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_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 301 302 10m; proxy_cache_valid 404 1m; # 忽略查詢(xún)字符串 proxy_ignore_headers Cache-Control; proxy_cache_bypass $http_pragma $http_authorization; proxy_no_cache $http_pragma $http_authorization; # 添加緩存控制頭 add_header X-Proxy-Cache $upstream_cache_status; } } }
5. 測(cè)試配置
在重新加載 Nginx 之前,先測(cè)試配置文件是否有語(yǔ)法錯(cuò)誤。
sudo nginx -t
6. 重新加載 Nginx
如果配置文件沒(méi)有問(wèn)題,重新加載 Nginx 使配置生效。
sudo systemctl reload nginx
7. 驗(yàn)證緩存
可以通過(guò)查看響應(yīng)頭中的 X-Proxy-Cache
字段來(lái)驗(yàn)證緩存是否生效。
示例請(qǐng)求:
curl -I http://example.com/some-dynamic-content
示例響應(yīng):
HTTP/1.1 200 OK Server: nginx/1.21.3 Date: Tue, 12 Oct 2021 12:34:56 GMT Content-Type: text/html Content-Length: 1234 Connection: keep-alive X-Proxy-Cache: HIT
總結(jié)
通過(guò)上述配置,Nginx 可以有效地緩存動(dòng)態(tài)內(nèi)容,提高系統(tǒng)的性能和響應(yīng)速度。這些配置可以根據(jù)實(shí)際需求進(jìn)行調(diào)整,以滿(mǎn)足不同的緩存策略和要求。
到此這篇關(guān)于Nginx實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容緩存的示例代碼的文章就介紹到這了,更多相關(guān)Nginx 動(dòng)態(tài)緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx如何實(shí)現(xiàn)同個(gè)ip、端口訪(fǎng)問(wèn)不同的項(xiàng)目(以路徑區(qū)分項(xiàng)目)
這篇文章主要介紹了nginx如何實(shí)現(xiàn)同個(gè)ip、端口訪(fǎng)問(wèn)不同的項(xiàng)目(以路徑區(qū)分項(xiàng)目),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Nginx反向代理如何到訪(fǎng)問(wèn)者機(jī)器上(后端調(diào)試)
這篇文章主要介紹了Nginx反向代理如何到訪(fǎng)問(wèn)者機(jī)器上(后端調(diào)試),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_por
nginx為了實(shí)現(xiàn)反向代理的需求而增加了一個(gè)ngx_http_proxy_module模塊,其中proxy_set_header指令就是該模塊需要讀取的配置文件,這篇文章主要介紹了nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_port區(qū)別,需要的朋友可以參考下2024-03-03Nginx+ModSecurity安全模塊部署的實(shí)現(xiàn)
本文主要介紹了Nginx+ModSecurity安全模塊部署的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Nginx Proxy Manager輕松搭建反向代理的實(shí)現(xiàn)
NginxProxyManager是一款開(kāi)源的反向代理和SSL證書(shū)管理工具,本文主要介紹了Nginx Proxy Manager輕松搭建反向代理的實(shí)現(xiàn),感興趣的可以了解一下2025-02-02