Home PC Games Linux Windows Database Network Programming Server Mobile  
           
  Home \ Server \ Nginx is used to build the cache module srcache_nginx     - Set multiple IP addresses for a single network card on Ubuntu 15.10 (Linux)

- to compile FFmpeg In Ubuntu (Linux)

- CentOS7 installation GAMIT and GMT (Linux)

- Set up MySQL master and slave servers under Ubuntu 14.04 (Server)

- hexdump Linux command (Linux)

- RHEL7.0 log system (Linux)

- IBM Data Studio to create objects using ---- double quotes / sensitive issues and the table / column renaming (Database)

- DB2 manually create a library (Database)

- Analysis of common mistakes when compiling MySQL installation (Database)

- Use Ansible installation NGINX and NGINX Plus (Server)

- xCAT Installation Kit (Linux)

- About the replication of JavaScript (Programming)

- OpenSSH version smooth upgrade method (Linux)

- 10 Linux in the passwd command examples (Linux)

- How to Install Apache on Linux servers (Server)

- Unix average load average load calculation method (Server)

- Oracle 11g How dataguard master repository to Oracle single instance data recovery (Database)

- Linux non-root user uses less than 1024 ports (Linux)

- On the Web application attack techniques Common (Linux)

- STL spatial Configurator (Programming)

 
         
  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:      
 
- Terminal multiplexing tool tmux use (Linux)
- Ubuntu users to install Xtreme Download Manager (Linux)
- Struts2 : combobox label use (Programming)
- CentOS 6.4 install and configure Squid Proxy Server (Linux)
- Enterprise Hadoop cluster architecture - NFS installation (Server)
- Ubuntu install virtual machine software VirtualBox 4.3.10 (Linux)
- Shell script to delete empty folders recursively (Linux)
- SQLite database commonly used sentences and visualization tools on MAC MeasSQLlite use (Database)
- Why is better than Git SVN (Linux)
- linux network security experience (Linux)
- To execute the cp command prompt type skip folder under CentOS (Linux)
- Using monitoring tool dsniff (Linux)
- Oracle Database ORA-01555 snapshot too old (Database)
- Spring AOP for logging (Programming)
- Restrict console access to Linux servers to improve security (Linux)
- Wine 1.7 is installed on a system based on RedHat or Debian (Linux)
- Linux environment Duplex (multi-machine) automatic mutual backup scheme (Linux)
- Ubuntu Locale configuration problem solving Can not set LC_CTYPE (Linux)
- Use the DBMS_SCHEDULER package to manage scheduled tasks (Database)
- Using PPA to install the lightweight theme software HotShots 2.1.0 under Ubuntu (Linux)
     
           
     
  CopyRight 2002-2022 newfreesoft.com, All Rights Reserved.