Nginx使用教程(七):使用Nginx緩存之proxy cache
2017-03-01 00:18:02
17843
Nginx使用教程(七):使用Nginx緩存之proxy cache
定義緩存目錄
使用您喜歡的文本編輯器打開/etc/nginx/nginx.conf,并在http {區(qū)域加入:
proxy_cache_path /var/www/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
proxy_temp_path /var/www/cache/tmp;
real_ip_header X-Forwarded-For;
前2行創(chuàng)建一個(gè)緩存目錄。 真正的X-Forwarded-For頭指示Nginx將原始IP地址轉(zhuǎn)發(fā)到后端(端口8080),否則所有流量似乎都來自127.0.0.1。
應(yīng)用緩存
接下來,我們需要在/etc/nginx/sites-available/website下創(chuàng)建虛擬主機(jī)
server {
listen 80;
server_name _;
server_tokens off;
location / {
proxy_pass http://m.lncdfzh.com.cn:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache my-cache;
proxy_cache_valid 3s;
proxy_no_cache $cookie_PHPSESSID;
proxy_cache_bypass $cookie_PHPSESSID;
proxy_cache_key "$scheme$host$request_uri";
add_header X-Cache $upstream_cache_status;
}
}
server {
listen 8080;
server_name _;
root /var/www/your_document_root/;
index index.php index.html index.htm;
server_tokens off;
location ~ .php$ {
try_files $uri /index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~ /.ht {
deny all;
}
}然后通過執(zhí)行以下操作啟用它:
cd
ln -s /etc/nginx/sites-available/website /etc/nginx/sites-enabled/website
/etc/init.d/nginx restart
第一個(gè)服務(wù)器定義是在端口80上運(yùn)行的反向緩存代理。
第二個(gè)服務(wù)器定義用于后端(典型的nginx配置,端口8080,而不是80)。
proxy相關(guān)指令介紹
proxy_pass http://m.lncdfzh.com.cn:8080/將流量轉(zhuǎn)發(fā)到端口8080,Nginx后端位于該端口
proxy_cache my-cache定義要使用的高速緩存,這里是my-cache,我們之前在nginx.conf中添加的
proxy_cache_valid 3s將緩存時(shí)間設(shè)置為3秒。 在確定緩存到期之前的秒數(shù)(清除緩存)。 此數(shù)字可以根據(jù)您網(wǎng)站上的內(nèi)容的新鮮度而增加或減少。
proxy_no_cache $ cookie_PHPSESSID禁止反向緩存代理緩存具有PHPSESSID Cookie的請求。 否則,您的登錄用戶頁面將被緩存并顯示給其他人。 如果您使用的Cookie框架使用Cookie的默認(rèn)PHPSESSID以外的Cookie名稱,請務(wù)必替換。
proxy_cache_bypass $ cookie_PHPSESSID指示代理繞過緩存,并且如果傳入請求包含PHPSESSID Cookie,則將請求轉(zhuǎn)發(fā)到后端。 否則,你最終會(huì)顯示登錄的用戶,登出的版本(從緩存提供)。
proxy_cache_key “$scheme$host$request_uri”定義用于緩存的鍵。 以下使用$ request_uri,它適合于根據(jù)url存儲(chǔ)不同版本的頁面(不同的GET參數(shù),不同的內(nèi)容)。
add_header X-Cache $ upstream_cache_status可用于調(diào)試,返回HIT,BYPASS或EXPIRED,具體取決于請求是從高速緩存(HIT)提供還是從后端(MISS)提供.EXPIRED表示在高速緩存中找到緩存,但它已過期,并已轉(zhuǎn)發(fā)到后端。