Home PC Games Linux Windows Database Network Programming Server Mobile  
           
  Home \ Server \ Nginx is used to build the cache module srcache_nginx     - Linux command binlog by filtering out the complete SQL statement (Database)

- Linux remote wake the computer original code [C] (Linux)

- Text editing and viewing text Linux command (Linux)

- Nonstandard IMP-00010 error processing one case (Database)

- Linux kernel VLAN study notes (Programming)

- Ubuntu / openSUSE users to install Veusz 1.21.1 (Linux)

- Service manager OpenBSD on rccl (Server)

- Oracle table Access Control (Database)

- Nine artifact control disk partition under Linux (Linux)

- IOwait Linux system monitoring diagnostic tools (Linux)

- Ubuntu 14.04 compile, install, configure, the latest development version GoldenDict (Linux)

- Java data structures - order linear form of table ArrayList (Programming)

- Linux foundation tutorial: how to modify the host name on CentOS or RHEL 7 (Linux)

- Linux kernel source tree to establish load module hello (Linux)

- Integrated security administrator Linux accident management (Linux)

- struts2 completely the wrong way to capture 404 (Programming)

- MySQL5.7 JSON type using presentation (Database)

- Android using SVG vector graphics to create cool animation effects (Programming)

- Linux security concerns again (Linux)

- Linux IPTables anti-DDOS attack Shell Scripting (Linux)

 
         
  Nginx is used to build the cache module srcache_nginx
     
  Add Date : 2018-11-21      
         
         
         
  Nginx can be embedded lua, let nginx execute lua scripts can handle high concurrent, non-blocking handling various requests, openresty nignx project can be used directly to build srcache_nginx + redis cache, rather than through the dynamic language processing (QPS can easily improved)

Look openresty in srcache-nginx-module workflow

Well ado

First, install
pcre

cd / usr / local / src

wget -c ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz

tar zxf pcre-8.38.tar.gz

drizzle7

cd / usr / local / src /

wget http://openresty.org/download/drizzle7-2011.07.21.tar.gz

tar xzvf drizzle-2011.07.21.tar.gz

cd drizzle-2011.07.21 /

./configure

make

make install

export LD_LIBRARY_PATH = / usr / local / lib: $ LD_LIBRARY_PATH

JIT (Just-In-Time Compiler)

wget -c http://luajit.org/download/LuaJIT-2.0.2.tar.gz

tar xzvf LuaJIT-2.0.2.tar.gz

cd LuaJIT-2.0.2

make install PREFIX = / usr / local / luajit

echo "/ usr / local / luajit / lib"> /etc/ld.so.conf.d/usr_local_luajit_lib.conf

ldconfig

export LUAJIT_LIB = / usr / local / luajit / lib

export LUAJIT_INC = / usr / local / luajit / include / luajit-2.0


nginx

cd / usr / local / src

wget -c http://nginx.org/download/nginx-1.9.9.tar.gz

git clone https://github.com/simpl/ngx_devel_kit.git

git clone https://github.com/openresty/set-misc-nginx-module.git

git clone https://github.com/openresty/memc-nginx-module.git

git clone https://github.com/openresty/echo-nginx-module.git

git clone https://github.com/openresty/lua-nginx-module.git

git clone https://github.com/openresty/srcache-nginx-module.git

git clone https://github.com/openresty/drizzle-nginx-module.git

git clone https://github.com/openresty/rds-json-nginx-module.git

wget http://people.freebsd.org/~osa/ngx_http_redis-0.3.7.tar.gz

tar zxf nginx-1.9.9.tar.gz

cd nginx-1.9.9

 

./configure

--prefix = / usr / local / nginx-1.9.9

--add-module = .. / memc-nginx-module

--add-module = .. / srcache-nginx-module

--add-module = .. / ngx_devel_kit

--add-module = .. / ngx_image_thumb

--add-module = .. / redis2-nginx-module

--add-module = .. / echo-nginx-module

--add-module = .. / lua-nginx-module

--add-module = .. / set-misc-nginx-module

--add-module = .. / ngx_http_redis-0.3.7

--with-pcre = .. / pcre-8.38

--with-pcre-jit

make && make install

redis

cd / usr / local

wget http://download.redis.io/releases/redis-3.0.6.tar.gz

tar zxf redis-3.0.6.tar.gz

cd redis-3.0.6

make

./src/redis-server &

Profiles

daemonize yes

pidfile /var/run/redis-6379.pid

port 6379

bind 127.0.0.1

timeout 0

tcp-keepalive 0

loglevel notice

logfile stdout

databases 16

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

slave-serve-stale-data yes

slave-read-only yes

repl-disable-tcp-nodelay no

slave-priority 100

maxmemory 8096mb

maxmemory-policy volatile-ttl

appendonly no

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

list-max-ziplist-entries 512

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

activerehashing yes

client-output-buffer-limit normal 0 0 0

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes


nginx simple configuration

user www www;

worker_processes auto;

 

error_log logs / error.log info;

 

pid logs / nginx.pid;

 

 

events {

    use epoll;

    worker_connections 65536;

}

 

 

http {

    include mime.types;

    default_type application / octet-stream;

    charset utf-8;

 

    log_format main '$ remote_addr - $ remote_user [$ time_local] "$ request"'

        '$ Status $ body_bytes_sent "$ http_referer"'

        ' "$ Http_user_agent" "$ http_x_forwarded_for"';

 

    log_format srcache_log '$ remote_addr - $ remote_user [$ time_local] "$ request"'

        ' "$ Status" $ body_bytes_sent $ request_time $ bytes_sent $ request_length'

      '[$ Upstream_response_time] [$ srcache_fetch_status] [$ srcache_store_status] [$ srcache_expire]';

   

    server_tokens off;

 

    keepalive_timeout 60 20;

    client_header_timeout 3m;

    client_body_timeout 3m;

    send_timeout 3m;

 

    client_header_buffer_size 16k;

    large_client_header_buffers 4 32k;

    server_names_hash_max_size 512;

    server_names_hash_bucket_size 64;

 

    sendfile on;

    tcp_nopush on;

    tcp_nodelay on;

 

 

    gzip on;

    gzip_min_length 1k;

    gzip_buffers 4 16k;

    gzip_http_version 1.0;

    gzip_comp_level 2;

    gzip_types text / plain application / x-javascript text / css application / xml;

    gzip_vary on;

 

    upstream memcache {

        server 192.168.1.30:12000;

        keepalive 10;

    }

    upstream redis {

        server 127.0.0.1:6379;

        keepalive 20;

    }

 

    server

    {

        listen 90 default;

        server_name _;

        return 444;

    }

    . Include vhosts / * conf;

}


Two, srcache + memcache

server {

    listen 8099;

    server_name 192.168.1.30;

    root / data / www;

    index index.php index.html index.htm;

    default_type text / plain;

 

    access_log logs / host.access.log main;

 

    location / hello {

        echo "This is a test";

    }

    location = / lua-version {

        content_by_lua '

            if jit then

                ngx.say (jit.version)

            else

                ngx.say (_VERSION)

                    end

          ';

    }

 

 

    location / memc {

        internal;

        memc_connect_timeout 100ms;

        memc_send_timeout 100ms;

        memc_read_timeout 100ms;

        set $ memc_key $ query_string;

        set $ memc_exptime 300;

        memc_pass memcache;

    }

 

    location ~ .php $ {

        charset utf-8;

        default_type text / html;

        set $ key $ uri $ args;

        srcache_fetch GET / memc $ key;

        srcache_store PUT / memc $ key;

        add_header X-Cached-From $ srcache_fetch_status;

        add_header X-Cached-Store $ srcache_store_status;

        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;

    }

 

    error_page 500 502 503 504 /50x.html;

    location = /50x.html {

        root html;

    }

}

When the first visit

Connection: keep-alive

Content-Encoding: gzip

Content-Type: text / html; charset = UTF-8

Date: Wed, 20 Jan 2016 16:32:32 GMT

Keep-Alive: timeout = 20

Server: nginx

Transfer-Encoding: chunked

Vary: Accept-Encoding

X-Cached-From: MISS

X-Cached-Store: STORE


Second visit

Connection: keep-alive

Content-Encoding: gzip

Content-Type: text / html; charset = UTF-8

Date: Wed, 20 Jan 2016 16:33:17 GMT

Keep-Alive: timeout = 20

Server: nginx

Transfer-Encoding: chunked

Vary: Accept-Encoding

X-Cached-From: HIT

X-Cached-Store: BYPASS


Which requires access to customize the

Three, srcache + redis

redis configuration test

server {

    listen 9001;

    server_name 192.168.1.30;

    root / data / www;

    index index.php index.html index.htm;

    default_type text / plain;

    access_log logs / host.access.log main;

 

    location / testx {

        echo '1';

    }

 

    location ~. * . php {

        srcache_store_private on;

        srcache_methods GET;

        srcache_response_cache_control off;

 

        set $ key $ uri;

        set_escape_uri $ escaped_key $ key;

        srcache_default_expire 172800;

        srcache_fetch GET / redis_get $ key;

        srcache_store PUT / redis_set key = $ escaped_key & exptime = $ srcache_expire;

 

        add_header X-Cached-From $ srcache_fetch_status;

        set_md5 $ md5key $ key;

        add_header X-md5-key $ md5key;

        add_header X-Cached-Store $ srcache_store_status;

        add_header X-Key $ key;

        add_header X-Query_String $ query_string;

        add_header X-expire $ srcache_expire;

        add_header X-uri $ uri;

        access_log logs / 9001-access.log srcache_log;

 

        include fastcgi_params;

        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;

        fastcgi_connect_timeout 60;

        fastcgi_send_timeout 180;

        fastcgi_read_timeout 180;

        fastcgi_buffer_size 128k;

        fastcgi_buffers 4 256k;

        fastcgi_busy_buffers_size 256k;

        fastcgi_temp_file_write_size 256k;

        fastcgi_intercept_errors on;

        fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;

        fastcgi_split_path_info ^ $ (+ php..) (*.);

        fastcgi_param PATH_INFO $ fastcgi_path_info;

    }

 

    location = / redis_get {

        internal;

        set_md5 $ redis_key $ args;

        redis_pass redis;

    }

    location = / show {

        echo $ request_uri;

        echo $ args;

    }

 

    location = / redis_set {

        internal;

 

        set_unescape_uri $ exptime $ arg_exptime;

        set_unescape_uri $ key $ arg_key;

        set_md5 $ key;

 

        redis2_query set $ key $ echo_request_body;

        redis2_query expire $ key $ exptime;

        redis2_pass redis;

    }

 

    location = / one {

        set $ value 'first';

        redis2_query set one $ value;

        redis2_pass redis;

    }

 

    location = / get {

        set_unescape_uri $ key $ arg_key; # this requires ngx_set_misc

        redis2_query get $ key;

        redis2_pass redis;

    }

 

    error_page 500 502 503 504 /50x.html;

    location = /50x.html {

        root html;

    }

}

You can view the log cache is hit

Four, lua

Nginx next stage of processing and use of Lua

init_by_lua http

set_by_lua server, server if, location, location if

rewrite_by_lua http, server, location, location if

access_by_lua http, server, location, location if

content_by_lua location, location if

header_filter_by_lua http, server, location, location if

body_filter_by_lua http, server, location, location if

log_by_lua http, server, location, location if

timer

lua Code

ngx.req.read_body () - explicitly read the req body

local data = ngx.req.get_body_data ()

if data then

    ngx.say ( "body data:")

    ngx.print (data)

    return

end

 

- Body may get buffered in a temp file:

local file = ngx.req.get_body_file ()

if file then

    ngx.say ( "body is in file", file)

else

    ngx.say ( "no body found")

end

 

local res = ngx.location.capture ( "/ foo / index.php")

if res then

  ngx.say ( "status:", res.status)

  ngx.say ( "body:")

  ngx.print (res.body)

end


Configure nginx

location / lua_test {

        content_by_lua_file conf / lua_test.lua;

}
     
         
         
         
  More:      
 
- Implement Oracle dynamic registration of non-standard port 1521 (Database)
- Ubuntu 15.04 installed JDK and configured as the default JDK (Linux)
- Analysis: Little Notebook facing a major security threat secure online (Linux)
- RedHat Linux 6 desktop installation (Linux)
- SSH automatic disconnection problem solving (Linux)
- How to Create a file can not be changed under Linux (Linux)
- Oracle archive log deletion (Database)
- Linux remote wake the computer original code [C] (Linux)
- Two classic macro definition under Linux (Linux)
- Use Elasticsearch + Logstash + Kibana set up centralized log Practice Analysis Platform (Server)
- How Oracle implements random reads from specific combinations (Database)
- VMware clone Linux find eth0 (Linux)
- Python control multi-process and multi-threaded concurrency (Programming)
- How to install Ubuntu strategy game Wesnoth 1.12.0 (Linux)
- C ++ string in the end (Programming)
- Make command tutorial (Linux)
- Flask installation environment (Linux)
- Installation JDK 1.8 under CentOS7 (Linux)
- Debian installation (Linux)
- Linux and hardware (Linux)
     
           
     
  CopyRight 2002-2020 newfreesoft.com, All Rights Reserved.