1. 程式人生 > >Nginx代理緩存加速服務器

Nginx代理緩存加速服務器

Nginx代理緩存加速服務器

Nginx緩存概述

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

1.proxy_cache原理

2.Nginx緩存特點

緩存穩定,運行速度與Squid相差無幾(因為都使用硬盤緩存)
對多核CPU的利用率比其他的開源軟件好

支持高並發請求數,能同時承受更多的訪問請求

3.Nginx緩存、Varnish、Squid對比

Squid:應用較早,支持傳統、透明、反向等功能的一款應用軟件,設置較復雜,一般配合CDN
Varnish:新興軟件,設計簡單,使用內存緩存數據(快)
Nginx緩存:需通過調用模塊實現緩存功能,基於硬盤緩存數據

案例:Nginx緩存加速
技術分享圖片
技術分享圖片

1、環境準備(nginx)

1)配置網卡IP vim /etc/sysconfig/network-scripts/ifcfg-eth0
技術分享圖片

2)關閉防火墻並設置為開機自動禁用
/etc/init.d/iptables stop && chkconfig --level 35 iptables off

技術分享圖片
3)臨時允許所有selinux操作 setenforce 0

2、安裝nginx

1)安裝依賴包 yum -y install pcre pcre-devel
2)解壓nginx模塊(支持nginx緩存功能)ngx_cache_purge-2.0.tar.gz到/usr/src/目錄下
技術分享圖片
3)解壓nginx到/usr/src/目錄 tar zxvf nginx-1.6.0.tar.gz -C /usr/src/
技術分享圖片
4)新建nginx運行用戶 useradd -M -s /sbin/nologin nginx
技術分享圖片
5)進入nginx解壓目錄並編譯安裝nginx
技術分享圖片
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx

--with-http_stub_status_module --with-pcre
--add-module=/usr/src/ngx_cache_purge-2.0/
技術分享圖片

選項註釋:
--prefix=/usr/local/nginx:指定Nginx安裝目錄為/usr/local/nginx
--user=nginx:指定Nginx運行用戶為nginx
--group=nginx:指定Nginx運行組為nginx
--with-http_stub_status_module:開啟狀態統計(一個簡單的頁面,顯示訪問量等)
--with-pcre:啟用pcre庫支持
--add-module=/usr/src/ngx_cache_purge-2.0/:指定需額外加載模塊的目錄位置
技術分享圖片
6)設置nginx的環境變量
echo "PATH=$PATH:/usr/local/nginx/sbin">>/etc/profile
技術分享圖片
//立即生效該PATH變量 source /etc/profile

3、配置Nginx

1)編輯nginx配置文件 vim /usr/local/nginx/conf/nginx.conf
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
2)創建nginx臨時緩存目錄 mkdir /var/cache/nginx
3)檢測Nginx配置文件是否有誤 nginx -t
技術分享圖片
註:在運行“nginx -t”命令後,當文件確認無誤後,會自動在指定目錄下自動新建臨時、緩存目錄
技術分享圖片
4)設置系統句柄數,註意單次生效 ulimit -SHn 65535
技術分享圖片
5)運行nginx服務 nginx
6)監聽80端口 netstat -utpln | grep 80
技術分享圖片

4、配置Web服務器

1)配置網卡IP vim /etc/sysconfig/network-scripts/ifcfg-eth0
技術分享圖片
2)關閉防火墻並設置為開機自動禁用
/etc/init.d/iptables stop && chkconfig --level 35 iptables off
技術分享圖片
3)臨時允許所有selinux操作 setenforce 0
4)安裝apache服務 yum -y install httpd
5)Web服務器編寫測試頁面
echo "This is Web1">/var/www/html/index.html
技術分享圖片
6)啟動httpd服務並設置為開機自啟
/etc/init.d/httpd start && chkconfig --level 35 httpd on
技術分享圖片

5、緩存測試

1) IE --> http://192.168.1.10(Nginx服務器IP)
技術分享圖片

2)遞歸查看目錄下內容,可以看見,剛才訪問的頁面已經緩存下來,並存儲在../c/43/目錄下(Nginx服務器) ls -R /var/cache/nginx/proxy_cache/
技術分享圖片
3)清除緩存IE --> http://192.168.1.10/purge/(手動清除/頁面緩存)
技術分享圖片
註:測試訪問時,使用“http://192.168.1.10”訪問,那麽在存儲緩存Key時,是使用URL記錄的,也是是說緩存的是“/”的緩存,那麽清除緩存時應使用“http://192.168.1.10/purge/”或“http://192.168.1.10/purge”,不可使用“http://192.168.1.10/purge/index.html”清除
ls -R /var/cache/nginx/proxy_cache/
//(Nginx服務器)再次驗證查看緩存目錄,之前緩存的頁面文件被清除
技術分享圖片

Nginx代理緩存加速服務器