欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx配置srcache_nginx模塊搭配Redis建立緩存系統(tǒng)

 更新時間:2016年01月25日 10:13:07   投稿:goldensun  
這篇文章主要介紹了Nginx配置srcache_nginx模塊搭配Redis建立緩存系統(tǒng)的方法,文中關(guān)于Nginx模塊和Redis數(shù)據(jù)庫的安裝就不再說明了,這里只關(guān)注配置搭建階段,需要的朋友可以參考下

1. nginx模塊

--add-module=../modules/ngx_devel_kit-0.2.18 
--add-module=../modules/set-misc-nginx-module-0.22rc8 
--add-module=../modules/srcache-nginx-module-0.22 
--add-module=../modules/redis-nginx-module-0.3.6 
--add-module=../modules/redis2-nginx-module-0.10

2. redis安裝配置

# vim redis.conf
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

由于只把redis當做緩存使用,因此沒有啟用持久化。

3. nginx配置

# vim nginx.conf
http
{
    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" '
                    '"$gzip_ratio" $request_time $bytes_sent $request_length';
 
    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]';
 
    set_real_ip_from 10.0.0.0/8;
    real_ip_header X-Forwarded-For;
 
    include     vhosts/test.jb51.net.conf;
}

# vim vhosts/test.jb51.net.conf

upstream redis {
    server 127.0.0.1:6379;
    keepalive 512;
}
 
server
    {
    listen    80;
    server_name test.jb51.net;
    index index.html index.htm index.php;
    root /data/test.jb51.net/webroot;
 
    location ~ .*\.php {
        srcache_store_private on;
        srcache_methods GET;
        srcache_response_cache_control off;
 
        if ($uri ~ /jb51.net/pp.php$){
            set $key $request_uri;
            set_escape_uri $escaped_key $key;
            srcache_fetch GET /redis $key;
            srcache_default_expire 172800;
            srcache_store PUT /redis2 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;
 
 access_log /data/httplogs/test.jb51.net-photo-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 {
        internal;
        set_md5 $redis_key $args;
        redis_pass redis;
    }
 
    location = /redis2 {
        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;
    }
 
    error_log /data/httplogs/test.jb51.net-error.log;
    access_log /data/httplogs/test.jb51.net-aceess.log main;
 
}

4. 測試
沒有做緩存狀態(tài):

2016125100430837.jpg (814×298)

有做緩存狀態(tài):

2016125100540105.jpg (799×276)

5. 響應(yīng)頭狀態(tài)
第一次請求:

2016125100621977.jpg (699×257)

再次請求:

2016125100645059.jpg (650×230)

6. 查看redis是否緩存以及過期時間

2016125101036633.jpg (545×60)

PS:srcache-nginx-module模塊指令說明:
srcache_fetch
語法:srcache_fetch <method> <uri> <args>?
默認值:no
配置段:http, server, location, location if
查詢緩存。返回200說明緩存命中,直接從緩存響應(yīng)客戶端請求。非200需要后端程序處理。
srcache_fetch_skip
語法:srcache_fetch_skip <flag>
默認值:srcache_fetch_skip 0
配置段:http, server, location, location if
<flag>支持nginx變量。當這個參數(shù)值不為空和不等于0,則從緩存取數(shù)據(jù)過程被無條件跳過。
srcache_store
語法:srcache_store <method> <uri> <args>?
默認值:no
配置段:http, server, location, location if
將當前請求的響應(yīng)存入緩存??梢允褂胹rcache_store_skip和srcache_store_max_size指令禁用緩存。不管是響應(yīng)狀態(tài)行,響應(yīng)頭,響應(yīng)體都會被緩存。默認情況下,下列特殊響應(yīng)頭不會被緩存:

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • TE
  • Trailers
  • Transfer-Encoding
  • Upgrade
  • Set-Cookie

可以使用srcache_store_pass_header、srcache_store_hide_header指令來控制哪些頭要緩存哪些不要。

注意:即使所有的響應(yīng)數(shù)據(jù)被立即發(fā)送,當前的nginx請求生命周期未必完成,直到srcache_store子請求完成。這意味著服務(wù)器端延遲關(guān)閉TCP連接,或下一個請求服務(wù)發(fā)送同一個TCP連接。
srcache_store_max_size
語法:srcache_store_max_size <size>
默認值:srcache_store_max_size 0
配置段:http, server, location, location if
當響應(yīng)體超過該值,將不會緩存。
當后端緩存存儲有對緩存數(shù)據(jù)做硬限制,這個指令非常有用。比如memcached服務(wù)器,上限是1M。
默認值0,不限制。
srcache_store_skip
語法:srcache_store_skip <flag>
默認值:srcache_store_skip 0
配置段:http, server, location, location if
<flag>支持nginx變量。當這個參數(shù)值不為空和不等于0,則從存入緩存過程被無條件跳過。
srcache_store_statuses
語法:srcache_store_statuses <status1> <status2> ..
默認值:srcache_store_statuses 200 301 302
配置段:http, server, location, location if
該指令控制那些狀態(tài)碼響應(yīng)被緩存。
srcache_header_buffer_size
語法:srcache_header_buffer_size <size>
默認值:srcache_header_buffer_size 4k/8k
配置段:http, server, location, location if
在序列化響應(yīng)頭時控制頭緩沖大小。默認大小為頁面大小,通常為4k或8k,取決于具體平臺。
注意:該大小是以每個頭的,因此,需要足夠大來容納最大響應(yīng)頭。
srcache_store_hide_header
語法:srcache_store_hide_header <header>
默認值:no
配置段:http, server, location, location if
默認情況下,除了以下頭緩存所有響應(yīng)頭:

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • TE
  • Trailers
  • Transfer-Encoding
  • Upgrade
  • Set-Cookie

可以隱藏多個響應(yīng)頭,不區(qū)分大小寫。如

srcache_store_hide_header X-Foo;
srcache_store_hide_header Last-Modified;
srcache_store_pass_header

語法:srcache_store_pass_header <header>
默認值:no
配置段:http, server, location, location if
默認情況下,除了以下頭緩存所有響應(yīng)頭:

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • TE
  • Trailers
  • Transfer-Encoding
  • Upgrade
  • Set-Cookie

可以緩存多個響應(yīng)頭,不區(qū)分大小寫。如

srcache_store_pass_header Set-Cookie;
srcache_store_pass_header Proxy-Autenticate;

srcache_methods
語法:srcache_methods <method>...
默認值:srcache_methods GET HEAD
配置段:http, server, location
srcache_ignore_content_encoding
語法:srcache_ignore_content_encoding on|off
默認值: srcache_ignore_content_encoding off
配置段:http, server, location, location if
內(nèi)容是否編碼。
建議后端服務(wù)器禁用gzip/deflate壓縮。在nginx.conf配置:

proxy_set_header Accept-Encoding "";

srcache_request_cache_control
語法:srcache_request_cache_control on|off
默認值:srcache_request_cache_control off
配置段:http, server, location
當該指令為on時,請求頭Cache-Control和Pragma按照下面的方法處理:
1. srcache_fetch查詢緩存操作時,當請求頭Cache-Control: no-cache 、 Pragma: no-cache 將跳過。
2. srcache_store存入緩存操作時,當請求頭Cache-Control: no-store將跳過。
當該指令為off時,將禁用此功能,對于繁忙的站點依賴緩存加速被認為是最安全的。
srcache_response_cache_control
語法:srcache_response_cache_control on|off
默認值:srcache_response_cache_control on
配置段:http, server, location
當該指令為on時,響應(yīng)頭Cache-Control和Expires按照下面的方法處理:

Cache-Control: private skips srcache_store,
Cache-Control: no-store skips srcache_store,
Cache-Control: no-cache skips srcache_store,
Cache-Control: max-age=0 skips srcache_store,
Expires: <date-no-more-recently-than-now> skips srcache_store.

該指令優(yōu)先級比srcache_store_no_store,srcache_store_no_cache,srcache_store_private高。
srcache_store_no_store
語法:srcache_store_no_store on|off
默認值:srcache_store_no_store off
配置段:http, server, location
開啟該指令,將強制響應(yīng)頭Cache-Control: no-store。默認為關(guān)閉。
srcache_store_no_cache
語法:srcache_store_no_cache on|off
默認值:srcache_store_no_cache off
配置段:http, server, location
開啟該指令,將強制響應(yīng)頭Cache-Control: no-cache。默認為關(guān)閉。
srcache_store_private
語法:srcache_store_private on|off
默認值:srcache_store_private off
配置段:http, server, location
開啟該指令,將強制響應(yīng)頭Cache-Control: private。默認為關(guān)閉。
srcache_default_expire
語法:srcache_default_expire <time>
默認值:srcache_default_expire 60s
配置段:http, server, location, location if
控制默認過期時間。當響應(yīng)頭既沒有Cache-Control: max-age=N也沒有指定Expires時,允許的$srcache_expire變量值。
該值必須小于597hours。
srcache_max_expire
語法:srcache_max_expire <time>
默認值:srcache_max_expire 0
配置段:http, server, location, location if
控制最大緩存時間,此設(shè)置優(yōu)先級高于其他計算方法。
該值必須小于597hours。
默認為0,不限制。

相關(guān)文章

  • nginx配置偽靜態(tài)和適配客戶端的方法步驟

    nginx配置偽靜態(tài)和適配客戶端的方法步驟

    這篇文章主要介紹了nginx配置偽靜態(tài)和適配客戶端的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • 深入理解Nginx之error_page模塊的使用

    深入理解Nginx之error_page模塊的使用

    error_page是nginx一個重要的指令,作用是定制化服務(wù)器錯誤頁面,本文主要介紹了Nginx之error_page模塊的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Nginx利用Logrotate實現(xiàn)日志分割的詳細過程

    Nginx利用Logrotate實現(xiàn)日志分割的詳細過程

    nginx日志分割是很常見的運維工作,下面這篇文章主要給大家介紹了關(guān)于Nginx利用Logrotate日志分割的詳細過程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • 詳解Nginx服務(wù)器中配置超時時間的方法

    詳解Nginx服務(wù)器中配置超時時間的方法

    這篇文章主要介紹了Nginx服務(wù)器中配置超時時間的方法,同時也對Nginx中的時間管理機制作了詳細的介紹,需要的朋友可以參考下
    2015-12-12
  • 使用nginx進行負載均衡的搭建全過程

    使用nginx進行負載均衡的搭建全過程

    負載均衡用于從“upstream”模塊定義的后端服務(wù)器列表中選取一臺服務(wù)器接受用戶的請求,下面這篇文章主要給大家介紹了關(guān)于使用nginx進行負載均衡的搭建全過程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)詳解

    Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)詳解

    訪問重寫 rewrite 是 Nginx HTTP 請求處理過程中的一個重要功能,下面這篇文章主要給大家介紹了Nginx中l(wèi)ocation匹配以及rewrite重寫跳轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 為何要小心Nginx的add_header指令詳解

    為何要小心Nginx的add_header指令詳解

    這篇文章主要給大家介紹了關(guān)于為何說要小心Nginx的add_header指令的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02
  • Nginx如何配置Http、Https、WS、WSS的方法步驟

    Nginx如何配置Http、Https、WS、WSS的方法步驟

    這篇文章主要介紹了Nginx如何配置Http、Https、WS、WSS的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • nginx中的limit_req限速設(shè)置配置示例

    nginx中的limit_req限速設(shè)置配置示例

    這篇文章主要介紹了nginx中的limit_req限速設(shè)置配置示例,本文直接給出配置文件例子,其中包含大量中文注釋,需要的朋友可以參考下
    2015-03-03
  • Nginx服務(wù)LNMP之WordPress部署流程步驟

    Nginx服務(wù)LNMP之WordPress部署流程步驟

    這篇文章主要為大家介紹了Nginx服務(wù)LNMP之WordPress部署流程步驟,本實驗意在部署過程,使用單機版部署,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03

最新評論