1. 程式人生 > >linux nginx緩存

linux nginx緩存

esp tar conf 能夠 依賴包 nag 3.5 expire linu

安裝環境

一臺nginx服務器 192.168.80.100
兩臺web服務器 192.168.80.101,192.168.80.102

首先關閉防火墻

systemctl stop firewalld
setenforce 0
註:可以寫防火墻規則

需要一下幾個包

nginx-1.13.5.tar //nginx包
ngx_cache_purge-2.3.tar //清理緩存用的包
pcre-8.41.tar //pcre 依賴包

解壓包到/opt/下

tar xf ngx_cache_purge-2.0.tar.gz -C /opt/ //解壓軟件包
tar xf pcre-8.31.tar.bz2 -C /opt/

tar xf nginx-1.13.5.tar.gz -C /opt/

安裝插件

yum install -y zlib-devel

編譯環境

yum install -y gcc gcc-c++ make

編譯並安裝

cd /opt/nginx-1.13.5/
定制功能:
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-pcre=/opt/pcre-8.41 \
--add-module=/opt/ngx_cache_purge-2.3
編譯並安裝:

make && make install

修改配置文件

vi /usr/local/nginx/conf/nginx.conf
技術分享圖片
技術分享圖片
技術分享圖片
use epoll //新增 ,事件驅動模型
charset utf-8 //添加一個字符編碼
以上去掉#號
技術分享圖片
在http{
keepalive_timeout 65; 下添加上圖
}
技術分享圖片

keepalive_timeout 65; //在當前行下面新增,連接超時時間
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5; #跟後端服務器連接超時時間,發起握手等候響應時間
proxy_read_timeout 60; #連接成功後等待後端服務器的響應時間,已經進入後端的排隊之中等候處理

proxy_send_timeout 5; #後端服務器回傳時間,就是在規定時間內後端服務器必須傳完所有數據
proxy_buffer_size 16k; #代理請求緩沖區,會保存用戶的頭信息以供nginx進行處理
proxy_buffers 4 64k; #nginx保存單個用幾個buffer最大用多少空間
proxy_busy_buffers_size 128k; #系統很忙時候可以申請最大的proxy_buffers
proxy_temp_file_write_size 128k; #proxy緩存臨時文件的大小

#以下兩行是開啟nginx緩存功能的配置:
proxy_temp_path /var/cache/nginx/cache_temp;
#創建緩存的時候可能生成一些臨時文件存放的位置,自動創建
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#定義緩存存儲目錄;緩存級別,子目錄級別,表示緩存目錄的一級子目錄是1個字符,二級子目錄是2個字符;建立共享緩存,緩存數據元數據的空間,查緩存時,先從此空間查找,然後到相應目錄中查找;緩存的時間;緩存空間大小
upstream backend_server{
server 192.168.80.185:80 weight=1 max_fails=2 fail_timeout=30s;
} 加權輪詢

server_name test 192.168.80.182; //修改
index index.html index.htm; //從location處移動過來

location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header; #出現502-504或錯誤,會跳過此臺服務器訪問下一臺服務器
proxy_cache cache_one; #啟用名為cache_one緩存
proxy_cache_valid 200 304 12h; #狀態碼,有效時間12小時,其余狀態碼10分鐘過期
proxy_cache_key $host$uri$is_args$args; #緩存key,通過唯一key來進行hash存取
proxy_set_header Host $host; #增加頭部信息,方便觀察客戶端respoce是否命中
proxy_set_header X-Forwarded-For $remote_addr; #後端節點機器獲取客戶端真實ip,$remote_addr代表客戶端的ip地址,
proxy_pass http://backend_server; 請求轉向
expires 1d;
}
access_log off;
}
}

創建緩存目錄

mkdir -p /var/cache/nginx/cache_temp

創建代理目錄

mkdir /var/cache/nginx/proxy_cache

軟連接到$PATH環境變量中,方便系統識別

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

創建一個程序用戶

useradd -M -s /sbin/nologin nginx

檢查nginx語法錯誤

nginx -t

啟動nginx服務

nginx

查看ngnx是否啟動

netstat -anpt | grep nginx

在web服務器上分別搭建一個httpd並能夠訪問到網頁

技術分享圖片

在windows瀏覽器上輸入192.168.80.100

技術分享圖片

測試命中:

技術分享圖片

重新啟動

pkill -9 nginx
nginx

測試

curl -I 192.168.80.100
技術分享圖片

清除緩存:

方法一:rm刪除已緩存的數據
rm -rf /var/cache/nginx/cache_temp/
rm -rf /var/cache/nginx/proxy_cache/

方法二:通過ngx_cache_purge擴展模塊清理,需要編譯安裝
在server{}添加如下:
技術分享圖片
location ~/purge(/.*) {
allow 127.0.0.1;
allow 192.168.80.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
location ~.(php|jsp|cgi)?$ {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
}

重啟nginx

pkill -9 nginx
nginx

清除緩存

http://192.168.80.182/purge/
技術分享圖片

linux nginx緩存