日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用nginx缓存服务器上的静态文件

發(fā)布時間:2025/6/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用nginx缓存服务器上的静态文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、nginx緩存的優(yōu)點

如圖所示,nginx緩存,可以在一定程度上,減少源服務器的處理請求壓力。
因為靜態(tài)文件(比如css,js, 圖片)中,很多都是不經(jīng)常更新的。nginx使用proxy_cache將用戶的請求緩存到本地一個目錄。下一個相同請求可以直接調(diào)取緩存文件,就不用去請求服務器了。
畢竟,IO密集型服務的處理是nginx的強項。

二、如何進行設置

先上個栗子:

http{proxy_connect_timeout 10;proxy_read_timeout 180;proxy_send_timeout 5;proxy_buffer_size 16k;proxy_buffers 4 32k;proxy_busy_buffers_size 96k;proxy_temp_file_write_size 96k;proxy_temp_path /tmp/temp_dir;proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;server {listen 80 default_server;server_name localhost;root /mnt/blog/;location / {}#要緩存文件的后綴,可以在以下設置。location ~ .*\.(gif|jpg|png|css|js)(.*) {proxy_pass http://ip地址:90;proxy_redirect off;proxy_set_header Host $host;proxy_cache cache_one;proxy_cache_valid 200 302 24h;proxy_cache_valid 301 30d;proxy_cache_valid any 5m;expires 90d;add_header wall "hey!guys!give me a star.";}}# 無nginx緩存的blog端口server {listen 90;server_name localhost;root /mnt/blog/;location / {}} }

因為我是在一臺服務器上做試驗,所以用了兩個端口80和90進行模擬兩臺服務器之間的交互。

80端口對接的是普通的域名(http://wangxiaokai.vip)訪問。
90端口負責處理80端口代理過來的資源訪問。
相當于90端口是源服務器,80端口是nginx反向緩存代理服務器。


接下來講一下配置項:

2.1 http層設置

proxy_connect_timeout 10;proxy_read_timeout 180;proxy_send_timeout 5;proxy_buffer_size 16k;proxy_buffers 4 32k;proxy_busy_buffers_size 96k;proxy_temp_file_write_size 96k;proxy_temp_path /tmp/temp_dir;proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
  • proxy_connect_timeout 服務器連接的超時時間
  • proxy_read_timeout 連接成功后,等候后端服務器響應時間
  • proxy_send_timeout 后端服務器數(shù)據(jù)回傳時間
  • proxy_buffer_size 緩沖區(qū)的大小
  • proxy_buffers 每個連接設置緩沖區(qū)的數(shù)量為number,每塊緩沖區(qū)的大小為size
  • proxy_busy_buffers_size 開啟緩沖響應的功能以后,在沒有讀到全部響應的情況下,寫緩沖到達一定大小時,nginx一定會向客戶端發(fā)送響應,直到緩沖小于此值。
  • proxy_temp_file_write_size 設置nginx每次寫數(shù)據(jù)到臨時文件的size(大小)限制
  • proxy_temp_path 從后端服務器接收的臨時文件的存放路徑
  • proxy_cache_path 設置緩存的路徑和其他參數(shù)。被緩存的數(shù)據(jù)如果在inactive參數(shù)(當前為1天)指定的時間內(nèi)未被訪問,就會被從緩存中移除

2.2 server層設置

2.2.1 反向緩存代理服務器

server {listen 80 default_server;server_name localhost;root /mnt/blog/;location / {}#要緩存文件的后綴,可以在以下設置。location ~ .*\.(gif|jpg|png|css|js)(.*) {proxy_pass http://ip地址:90;proxy_redirect off;proxy_set_header Host $host;proxy_cache cache_one;proxy_cache_valid 200 302 24h;proxy_cache_valid 301 30d;proxy_cache_valid any 5m;expires 90d;add_header wall "hey!guys!give me a star.";}}
  • proxy_pass nginx緩存里拿不到資源,向該地址轉(zhuǎn)發(fā)請求,拿到新的資源,并進行緩存
  • proxy_redirect 設置后端服務器“Location”響應頭和“Refresh”響應頭的替換文本
  • proxy_set_header 允許重新定義或者添加發(fā)往后端服務器的請求頭
  • proxy_cache 指定用于頁面緩存的共享內(nèi)存,對應http層設置的keys_zone
  • proxy_cache_valid 為不同的響應狀態(tài)碼設置不同的緩存時間
  • expires 緩存時間

這里我設置了圖片、css、js靜態(tài)資源進行緩存。
當用戶輸入http://wangxiaokai.vip域名時,解析得到ip:port的訪問地址。port默認為80。所以頁面請求會被當前server截取到,進行請求處理。
當解析到上述文件名結(jié)尾的靜態(tài)資源,會到緩存區(qū)獲取靜態(tài)資源。
如果獲取到對應資源,則直接返回數(shù)據(jù)。
如果獲取不到,則將請求轉(zhuǎn)發(fā)給proxy_pass指向的地址進行處理。

2.2.2 源服務器

server {listen 90;server_name localhost;root /mnt/blog/;location / {}}

這里直接處理90端口接受到的請求,到服務器本地目錄/mnt/blog下抓取資源進行響應。

三、如何驗證緩存是否有效

細心的讀者應該發(fā)現(xiàn),我在第二段栗子里,留了個彩蛋 add_header wall "hey!guys!give me a star."。
add_header是用于在報頭設置自定義的信息。
所以,如果緩存有效的話,那么靜態(tài)資源返回的報頭,一定會帶上這個信息。

訪問http://wangxiaokai.vip結(jié)果如下:

四、參考

[1] nginx文檔
[2] nginx反向緩存代理詳解
[3] Nginx緩存服務器靜態(tài)文件

五、后記

我的GitHub倉庫
Give me a star,if it's work out for you.Thank you.

轉(zhuǎn)載于:https://www.cnblogs.com/walls/p/9017821.html

總結(jié)

以上是生活随笔為你收集整理的使用nginx缓存服务器上的静态文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。