這篇“Nginx配置srcache_nginx模塊搭配redis建立緩存系統(tǒng)的方法”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Nginx配置srcache_nginx模塊搭配Redis建立緩存系統(tǒng)的方法”文章吧。
創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、電商網(wǎng)站制作開發(fā)、小程序定制開發(fā)、微信營銷、系統(tǒng)平臺開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
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當(dāng)做緩存使用,因此沒有啟用持久化。
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):
有做緩存狀態(tài):
5. 響應(yīng)頭狀態(tài)
第一次請求:
再次請求:
6. 查看redis是否緩存以及過期時(shí)間
ps:srcache-nginx-module模塊指令說明:
srcache_fetch
語法:srcache_fetch <method> <uri> <args>?
默認(rèn)值:no
配置段:http, server, location, location if
查詢緩存。返回200說明緩存命中,直接從緩存響應(yīng)客戶端請求。非200需要后端程序處理。
srcache_fetch_skip
語法:srcache_fetch_skip <flag>
默認(rèn)值:srcache_fetch_skip 0
配置段:http, server, location, location if
<flag>支持nginx變量。當(dāng)這個(gè)參數(shù)值不為空和不等于0,則從緩存取數(shù)據(jù)過程被無條件跳過。
srcache_store
語法:srcache_store <method> <uri> <args>?
默認(rèn)值:no
配置段:http, server, location, location if
將當(dāng)前請求的響應(yīng)存入緩存。可以使用srcache_store_skip和srcache_store_max_size指令禁用緩存。不管是響應(yīng)狀態(tài)行,響應(yīng)頭,響應(yīng)體都會被緩存。默認(rèn)情況下,下列特殊響應(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ā)送,當(dāng)前的nginx請求生命周期未必完成,直到srcache_store子請求完成。這意味著服務(wù)器端延遲關(guān)閉tcp連接,或下一個(gè)請求服務(wù)發(fā)送同一個(gè)tcp連接。
srcache_store_max_size
語法:srcache_store_max_size <size>
默認(rèn)值:srcache_store_max_size 0
配置段:http, server, location, location if
當(dāng)響應(yīng)體超過該值,將不會緩存。
當(dāng)后端緩存存儲有對緩存數(shù)據(jù)做硬限制,這個(gè)指令非常有用。比如memcached服務(wù)器,上限是1m。
默認(rèn)值0,不限制。
srcache_store_skip
語法:srcache_store_skip <flag>
默認(rèn)值:srcache_store_skip 0
配置段:http, server, location, location if
<flag>支持nginx變量。當(dāng)這個(gè)參數(shù)值不為空和不等于0,則從存入緩存過程被無條件跳過。
srcache_store_statuses
語法:srcache_store_statuses <status1> <status2> ..
默認(rèn)值:srcache_store_statuses 200 301 302
配置段:http, server, location, location if
該指令控制那些狀態(tài)碼響應(yīng)被緩存。
srcache_header_buffer_size
語法:srcache_header_buffer_size <size>
默認(rèn)值:srcache_header_buffer_size 4k/8k
配置段:http, server, location, location if
在序列化響應(yīng)頭時(shí)控制頭緩沖大小。默認(rèn)大小為頁面大小,通常為4k或8k,取決于具體平臺。
注意:該大小是以每個(gè)頭的,因此,需要足夠大來容納最大響應(yīng)頭。
srcache_store_hide_header
語法:srcache_store_hide_header <header>
默認(rèn)值:no
配置段:http, server, location, location if
默認(rèn)情況下,除了以下頭緩存所有響應(yīng)頭:
connection
keep-alive
proxy-authenticate
proxy-authorization
te
trailers
transfer-encoding
upgrade
set-cookie
可以隱藏多個(gè)響應(yīng)頭,不區(qū)分大小寫。如
srcache_store_hide_header x-foo; srcache_store_hide_header last-modified;
srcache_store_pass_header
語法:srcache_store_pass_header <header>
默認(rèn)值:no
配置段:http, server, location, location if
默認(rèn)情況下,除了以下頭緩存所有響應(yīng)頭:
connection
keep-alive
proxy-authenticate
proxy-authorization
te
trailers
transfer-encoding
upgrade
set-cookie
可以緩存多個(gè)響應(yīng)頭,不區(qū)分大小寫。如
srcache_store_pass_header set-cookie; srcache_store_pass_header proxy-autenticate;
srcache_methods
語法:srcache_methods <method>...
默認(rèn)值:srcache_methods get head
配置段:http, server, location
srcache_ignore_content_encoding
語法:srcache_ignore_content_encoding on|off
默認(rèn)值: 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
默認(rèn)值:srcache_request_cache_control off
配置段:http, server, location
當(dāng)該指令為on時(shí),請求頭cache-control和pragma按照下面的方法處理:
1. srcache_fetch查詢緩存操作時(shí),當(dāng)請求頭cache-control: no-cache 、 pragma: no-cache 將跳過。
2. srcache_store存入緩存操作時(shí),當(dāng)請求頭cache-control: no-store將跳過。
當(dāng)該指令為off時(shí),將禁用此功能,對于繁忙的站點(diǎn)依賴緩存加速被認(rèn)為是最安全的。
srcache_response_cache_control
語法:srcache_response_cache_control on|off
默認(rèn)值:srcache_response_cache_control on
配置段:http, server, location
當(dāng)該指令為on時(shí),響應(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
默認(rèn)值:srcache_store_no_store off
配置段:http, server, location
開啟該指令,將強(qiáng)制響應(yīng)頭cache-control: no-store。默認(rèn)為關(guān)閉。
srcache_store_no_cache
語法:srcache_store_no_cache on|off
默認(rèn)值:srcache_store_no_cache off
配置段:http, server, location
開啟該指令,將強(qiáng)制響應(yīng)頭cache-control: no-cache。默認(rèn)為關(guān)閉。
srcache_store_private
語法:srcache_store_private on|off
默認(rèn)值:srcache_store_private off
配置段:http, server, location
開啟該指令,將強(qiáng)制響應(yīng)頭cache-control: private。默認(rèn)為關(guān)閉。
srcache_default_expire
語法:srcache_default_expire <time>
默認(rèn)值:srcache_default_expire 60s
配置段:http, server, location, location if
控制默認(rèn)過期時(shí)間。當(dāng)響應(yīng)頭既沒有cache-control: max-age=n也沒有指定expires時(shí),允許的$srcache_expire變量值。
該值必須小于597hours。
srcache_max_expire
語法:srcache_max_expire <time>
默認(rèn)值:srcache_max_expire 0
配置段:http, server, location, location if
控制最大緩存時(shí)間,此設(shè)置優(yōu)先級高于其他計(jì)算方法。
該值必須小于597hours。
默認(rèn)為0,不限制。
以上就是關(guān)于“Nginx配置srcache_nginx模塊搭配Redis建立緩存系統(tǒng)的方法”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:Nginx配置srcache_nginx模塊搭配Redis建立緩存系統(tǒng)的方法
文章轉(zhuǎn)載:http://bm7419.com/article32/jdedsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、用戶體驗(yàn)、營銷型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、Google、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)