openResty緩存前移(到達nginx端)


一、openResty的理解

   OpenResty是一個基於 Nginx 與 Lua 的高性能 Web 平台,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用於方便地搭建能夠處理超高並發、擴展性極高的動態 Web 應用、Web 服務和動態網關。

   OpenResty 通過匯聚各種設計精良的 Nginx 模塊(主要由 OpenResty 團隊自主開發),從而將 Nginx 有效地變成一個強大的通用 Web 應用平台。這樣,Web 開發人員和系統工程師可以使用 Lua 腳本語言調動 Nginx 支持的各種 C 以及 Lua 模塊,快速構造出足以勝任 10K 乃至 1000K 以上單機並發連接的高性能 Web 應用系統。

   OpenResty 的目標是讓你的Web服務直接跑在 Nginx 服務內部,充分利用 Nginx 的非阻塞 I/O 模型,不僅僅對 HTTP 客戶端請求,甚至於對遠程后端諸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都進行一致的高性能響應。

二、openResty的搭建

   該實驗在上一篇`memcache+php頁面訪問的加速`的基礎上進行如下的操作,並於上一篇做對比。

   1)關閉nginx服務,否則會與openResty服務端口沖突

   --->  nginx  -s stop

   2)下載openResty源碼包,解壓並編譯

   --->  tar zxf openresty-1.13.6.1.tar.gz

   --->  cd openresty-1.13.6.1

   --->  ./configure --prefix=/usr/local/lnmp/openresty --with-http_ssl_module  --with-http_stub_status_module --user=nginx --group=nginx  --with-threads --with-file-aio

   --->  gmake && gmake install

   3)修改openResrty的配置文件

   --->  cd /usr/local/lnmp/openresty/nginx/conf/

   --->  vim nginx.conf

 user  nginx  nginx;
 worker_processes  1;

 #error_log  logs/error.log;
 #error_log  logs/error.log  notice;
 #error_log  logs/error.log  info;
 #pid        logs/nginx.pid;

 events {
     worker_connections  65535;
 }

 http {
         upstream  memcache{
         server localhost:11211;
         keepalive  512;
         }  
 #upstream屬於handler,他不產生自己的內容,而是通過請求后端服務器得到內容,所以才稱為upstream(上游)。請求並取得響應內容的整個過
 #程已經被封裝到nginx內部,所以upstream模塊只需要開發若干回調函數,完成構造請求和解析響應等具體的工作。
 # nginx將memcache緩存前移,客戶端請求到來,先查看memcache緩存
 include       mime.types;
     default_type  application/octet-stream;

     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
     #                  '$status $body_bytes_sent "$http_referer" '
     #                  '"$http_user_agent" "$http_x_forwarded_for"';

     #access_log  logs/access.log  main;

     sendfile        on;
     #tcp_nopush     on;
 
     #keepalive_timeout  0;
     keepalive_timeout  65;
     #gzip  on;

     server {
         listen       80;
         server_name  localhost;

         #charset koi8-r;
         #access_log  logs/host.access.log  main;

         location / {
             root   html;
             index  index.html index.htm;
         }
         #error_page  404              /404.html;
         # redirect server error pages to the static page /50x.html
         #
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
            root   html;
         }

         # 所有請求都通過請求這個location來操作 memcache,memc-nginx-module存取memcache是基於http method語義的        

         location /memc{

         internal;         # 只接收內部訪問,不接受外部http訪問。比較安全。也可用deny和allow來做權限設定
         memc_connect_timeout  100ms;
         memc_send_timeout 100ms;
         memc_read_timeout 100ms;
         set $memc_key $query_string;     # 以鍵值對的形式存儲;memc_key表示以什么為key
         set $memc_exptime 300;           # 表示緩存失效時間,單位為s(一般為5分鍾)
         memc_pass memcache;
         }
         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
         #
         #location ~ \.php$ {
         #    proxy_pass   http://127.0.0.1;
         #}

         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
         #
            location ~ \.php$ {
            set $key $uri$args;

            srcache_fetch  GET /memc  $key;    #http的GET方法表示get、PUT方法表示set           

            srcache_store  PUT /memc  $key;

            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
         }

         # deny access to .htaccess files, if Apache's document root
         # concurs with nginx's one
         #
         #location ~ /\.ht {
         #    deny  all;
         #}
     }

     # another virtual host using mix of IP-, name-, and port-based configuration
     #
     #server {
     #    listen       8000;
     #    listen       somename:8080;
     #    server_name  somename  alias  another.alias;

     #    location / {
     #        root   html;
     #        index  index.html index.htm;
     #    }
     #}
 }

   4)打開openresty服務。檢查是否有錯誤

   --->  /usr/local/lnmp/openresty/nginx/sbin/nginx  -t    # 檢測語法是否有錯誤
   --->  /usr/local/lnmp/openresty/nginx/sbin/nginx        # 啟動openresty服務
   5)在真機中測試

  

   # 在真機解析example.php文件,每秒請求的次數較之前有很大的提高:

  

  

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM