實現的需求圖:php
1、實現反向代理html
一、安裝nginx,兩臺服務器都須要安裝nginx
1)安裝依賴包c++
yum -y install gcc make cmake ncurses-devel libxml2-devel libtool-ltdl-devel gcc-c++ autoconf automake bison zlib-devel pcre-devel openssl openssl-devel
2)下載nginxweb
wget http://nginx.org/download/nginx-1.8.0.tar.gz
3)解壓編譯算法
tar -zxvf nginx-1.8.0.tar.gz ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx make make install
二、修改配置文件vim
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; } location / { proxy_pass http://192.168.0.37/; } }
2)真實數據服務器:改路徑便可vim /usr/local/nginx/conf/nginx.conf後端
location /{ root /data; index index.html index.php; }
mkdir /data echo "I am realy server" >/data/index.html
三、兩臺機器上啓動nginx緩存
/usr/local/nginx/sbin/nginx
四、測試安全
2、緩存機制
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g; server { listen 80; server_name localhost; } location / { proxy_cache cache_one; proxy_cache_valid 200 304 302 24h; proxy_pass http://192.168.0.37/; } }
2:查看他的進程多了緩存
查看一下具體的內容:
3)而後把真實數據服務器的nginx給停掉,再一次訪問,仍是能夠獲得
4)而後把代理服務器的緩存數據給刪除,再一次訪問,獲得結果:說明從緩存沒有找到,而後代理轉發到真是的服務器也沒找到,這就說明了第二次訪問的是緩存數據的內容
第二次再去訪問,仍是監聽這個80端口,能夠發現tcpdump沒有任何數據,說明它直接從緩存裏讀取了,你能夠把緩存刪了,再次在客戶端訪問,能夠看到它又有數據了
基於proxy_store的緩存
1:修改反向代理的配置文件
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; } location / { root "/web1"; proxy_store on; proxy_store_access user:rw group:rw all:r; proxy_temp_path "/web1"; if ( !-f $request_filename ) { proxy_pass http://192.168.0.37; } } }
建立文件夾:
mkdir /web1
2:真實數據服務器的配置文件
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; } root /data; }
在代理服務器的緩存目錄下能夠看到緩存到的數據和真實數據服務器的目錄結構同樣:(這個與proxy cache不同)
把代理緩存的a.html改一下:
再次訪問的時候,返回的數據以下,說明它第二次訪問的是緩存
proxy store 與proxy cache的區別:proxy store不提供緩存過時更新,內存索引創建等功能,緩存文件一直會保存在本地磁盤中。
注:學習《nginx高性能Web服務器詳解》的時候總結