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文件,每秒请求的次数较之前有很大的提高:

  

  

   

 

posted @ 2018-10-04 20:41  UTHN_B  阅读(1301)  评论(0编辑  收藏  举报