Nginx緩存

開啓三臺虛擬機
192.168.80.100         Nginx
192.168.80.101         web1
192.168.80.102         web2

提供與Squid類似的緩存,把URL以及相關信息當成key,用MD5編碼哈希後,把數據文件保存在硬盤上,並且只能爲指定的URL或者狀態碼設置過期時間,並不支持類似 squid的purge命令來手動清除指定緩存頁面,但是可以通過第三方的ngx_cache_purge來清除指定的URL緩存
Nginx的緩存加速功能是由proxy_cache(用於反向代理和靜態緩存)和fastcgi_cache(PHP動態緩存)兩個功能模塊完成

反向代理:proxy_pass 轉發
Nginx緩存特點:
緩存穩定,運行速度與Squid相差無幾(因爲都使用硬盤緩存)
對多核CPU的利用率比其他的開源軟件好
支持高併發請求數,能同時承受更多的訪問請求
nginx有兩段緩存:
共享內存(存儲鍵和緩存對象元數據)
磁盤空間:存儲數據
Nginx緩存、Varnish、Squid對比
Squid:應用較早,支持傳統、透明、反向等功能的一款應用軟件,設置較複雜,一般配合CDN
Varnish:新興軟件,設計簡單,使用內存緩存數據(快)
Nginx緩存:需通過調用模塊實現緩存功能,基於硬盤緩存數據

nginx要定義緩存,需要以下配置:
proxy_cache_path:不能定義在server{}上下文中 
官方幫助手冊:https://docs.nginx.com/nginx/admin-guide/
實戰:nginx緩存
三臺虛擬機都要啓動:
systemctl stop firewalld     //關閉防火牆
setenforce 0                      //關閉監控
yum install lrz* -y        //安裝上傳軟件
再把nginx-1.13.5.tar
ngx_cache_purge-2.3.tar
pcre-8.41.tar拉入

Nginx緩存

解壓軟件包:
tar xf ngx_cache_purge-2.3.tar.gz -C /opt/
tar xf pcre-8.41.tar.gz -C /opt/
tar xf nginx-1.13.5.tar.gz -C /opt/
cd /opt/nginx-1.13.5/

Nginx緩存

yum install -y zlib-devel   //安裝插件

yum install -y gcc gcc-c++ make
./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
useradd -M -s /sbin/nologin nginx       //創建一個程序用戶
cd
ln -s /usr/local/nginx/conf/nginx.conf /etc/        //軟鏈接
vi /etc/nginx.conf 
修改新增以下內容:
user  nginx nginx;
……
error_log  logs/error.log  info;前面的#去掉 
pid的#去掉

use epoll; //新增 ,事件驅動模型

default_type  application/octet-stream;    #默認文件類型
        charset utf-8; //新增

tcp_nopush  on; //去掉#號

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.101:80 weight=1 max_fails=2 fail_timeout=30s;
                server 192.168.80.102:80 weight=1 max_fails=2 fail_timeout=30s;
}   加權輪詢

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;    請求轉向
                }

Nginx緩存
Nginx緩存
Nginx緩存
Nginx緩存

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/         //軟連接到$PATH環境變量中,方便系統識別
nginx -t   //檢查nginx語法錯誤

Nginx緩存

mkdir -p /var/cache/nginx/cache_temp     //創建緩存目錄
mkdir /var/cache/nginx/proxy_cache      //創建代理目錄
nginx -t      //檢查nginx語法錯誤

Nginx緩存

nginx        //啓動nginx服務
netstat -anpt | grep nginx

Nginx緩存

在另一臺虛擬機搭建一個web服務器:web1(80.101)
yum install -y httpd       //安裝http
vi /etc/httpd/conf/httpd.conf
把ServerName www.example.com:80 前面#刪除
echo "<h1>192.168.80.101</h1>" > /var/www/html/index.html
systemctl start httpd
在另一臺虛擬機搭建一個web服務器:web2(80.102)
yum install -y httpd       //安裝http
vi /etc/httpd/conf/httpd.conf
把ServerName www.example.com:80 前面#刪除
echo "<h1>192.168.80.102</h1>" > /var/www/html/index.html
systemctl start httpd
在瀏覽器上輸入:
http://192.168.80.101/

Nginx緩存

http://192.168.80.102/

Nginx緩存

http://192.168.80.100/

Nginx緩存

cd /var/cache/nginx/proxy_cache
cd 8
cd 9e/
cd
curl -I 192.168.80.100

Nginx緩存

vi /etc/nginx.conf
在server_name localhost;下添加
add_header  X-Via $server_addr;
add_header  X-Cache  "$upstream_cache_status  from  $server_addr";

Nginx緩存

nginx -t
pkill -9 nginx
nginx
curl -I 192.168.80.100

Nginx緩存

vi /etc/nginx.conf
把以下內容添加在/404.html上面:
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;
                }

Nginx緩存

nginx -t
pkill -9 nginx
nginx

Nginx緩存

http://192.168.80.100/purge/         //用來清除緩存

Nginx緩存

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章