Nginx使用教程(七):使用Nginx緩存之proxy cache

定義緩存目錄

<br\>
使用您喜歡的文本編輯器打開/etc/nginx/nginx.conf,並在http {區域加入:php

  1. proxy_cache_path  /var/www/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
  2.  
  3. proxy_temp_path /var/www/cache/tmp;
  4.  
  5. real_ip_header X-Forwarded-For;

前2行建立一個緩存目錄。 真正的X-Forwarded-For頭指示Nginx將原始IP地址轉發到後端(端口8080),不然全部流量彷佛都來自127.0.0.1。html

應用緩存

<br\>
接下來,咱們須要在/etc/nginx/sites-available/website下建立虛擬主機nginx

  1. server {
  2.         listen 80;
  3.         server_name _;
  4.         server_tokens off;
  5.         location / {
  6.                 proxy_pass              http://127.0.0.1:8080/;
  7.                 proxy_set_header        Host                    $host;
  8.                 proxy_set_header        X-Real-IP               $remote_addr;
  9.                 proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
  10.                 proxy_cache  my-cache;
  11.                 proxy_cache_valid 3s;
  12.                 proxy_no_cache $cookie_PHPSESSID;
  13.                 proxy_cache_bypass $cookie_PHPSESSID;
  14.                 proxy_cache_key         "$scheme$host$request_uri";
  15.                 add_header X-Cache $upstream_cache_status;
  16.         }
  17. }
  18.  
  19. server {
  20.         listen   8080;
  21.         server_name _;
  22.         root /var/www/your_document_root/;
  23.         index index.php index.html index.htm;
  24.         server_tokens off;
  25.         location ~ \.php$ {
  26.                 try_files $uri /index.php;
  27.                 fastcgi_pass 127.0.0.1:9000;
  28.                 fastcgi_index index.php;
  29.                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  30.                 include /etc/nginx/fastcgi_params;
  31.         }
  32.         location ~ /\.ht {
  33.                 deny all;
  34.         }
  35. }

而後經過執行如下操做啓用它:web

  1. cd
  2. ln -s /etc/nginx/sites-available/website /etc/nginx/sites-enabled/website
  3. /etc/init.d/nginx restart

第一個服務器定義是在端口80上運行的反向緩存代理。
第二個服務器定義用於後端(典型的nginx配置,端口8080,而不是80)。後端

proxy相關指令介紹

<br\>
proxy_pass http://127.0.0.1:8080/將流量轉發到端口8080,Nginx後端位於該端口
proxy_cache my-cache定義要使用的高速緩存,這裏是my-cache,咱們以前在nginx.conf中添加的
proxy_cache_valid 3s將緩存時間設置爲3秒。 在肯定緩存到期以前的秒數(清除緩存)。 此數字能夠根據您網站上的內容的新鮮度而增長或減小。
proxy_no_cache $ cookie_PHPSESSID禁止反向緩存代理緩存具備PHPSESSID Cookie的請求。 不然,您的登陸用戶頁面將被緩存並顯示給其餘人。 若是您使用的Cookie框架使用Cookie的默認PHPSESSID之外的Cookie名稱,請務必替換。
proxy_cache_bypass $ cookie_PHPSESSID指示代理繞過緩存,而且若是傳入請求包含PHPSESSID Cookie,則將請求轉發到後端。 不然,你最終會顯示登陸的用戶,登出的版本(從緩存提供)。
proxy_cache_key 「$scheme$host$request_uri」定義用於緩存的鍵。 如下使用$ request_uri,它適合於根據url存儲不一樣版本的頁面(不一樣的GET參數,不一樣的內容)。
add_header X-Cache $ upstream_cache_status可用於調試,返回HIT,BYPASS或EXPIRED,具體取決於請求是從高速緩存(HIT)提供仍是從後端(MISS)提供.EXPIRED表示在高速緩存中找到緩存,但它已過時,並已轉發到後端。centos

相關文章
相關標籤/搜索