日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

用lua扩展你的Nginx(整理)

發布時間:2024/2/28 Nginx 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用lua扩展你的Nginx(整理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先得聲明。這不是我的原創,是在網上搜索到的一篇文章,原著是誰也搞不清楚了。按風格應該是屬于章亦春的文章。

整理花了不少時間,所以就暫寫成原創吧。

?

一. 概述

Nginx是一個高性能。支持高并發的,輕量級的webserver。眼下,Apache依舊webserver中的老大,可是在全球前1000大的webserver中,Nginx的份額為22.4%。Nginx採用模塊化的架構,官方版本號的Nginx中大部分功能都是通過模塊方式提供的,比方Http模塊、Mail模塊等。通過開發模塊擴展Nginx,能夠將Nginx打造成一個全能的應用server,這樣能夠將一些功能在前端Nginx反向代理層解決,比方登錄校驗、js合并、甚至數據庫訪問等等。 ? ? 可是,Nginx模塊需要用C開發,并且必須符合一系列復雜的規則。最重要的用C開發模塊必需要熟悉Nginx的源碼。使得開發人員對其望而生畏。淘寶的agentzh和chaoslawful開發的ngx_lua模塊通過將lua解釋器集成進Nginx。能夠採用lua腳本實現業務邏輯,因為lua的緊湊、高速以及內建協程,所以在保證高并發服務能力的同一時候極大地減少了業務邏輯實現成本。

? ? 本文向大家介紹ngx_lua,以及我在使用它開發項目的過程中遇到的一些問題。
?

二. 準備

首先,介紹一下Nginx的一些特性,便于后文介紹ngx_lua的相關特性。

?

Nginx進程模型

Nginx採用多進程模型,單Master—多Worker,由Master處理外部信號、配置文件的讀取及Worker的初始化。Worker進程採用單線程、非堵塞的事件模型(Event Loop,事件循環)來實現port的監聽及client請求的處理和響應,同一時候Worker還要處理來自Master的信號。

因為Worker使用單線程處理各種事件。所以一定要保證主循環是非堵塞的,否則會大大減少Worker的響應能力。

Nginx處理Http請求的過程

表面上看,當Nginx處理一個來自client的請求時,先依據請求頭的host、ip和port來確定由哪個server處理,確定了server之后,再依據請求的uri找到相應的location。這個請求就由這個location處理。

實際Nginx將一個請求的處理劃分為若干個不同階段(phase)。這些階段依照前后順序依次運行。也就是說NGX_HTTP_POST_READ_PHASE在第一個,NGX_HTTP_LOG_PHASE在最后一個。

<span style="font-size:10px;">NGX_HTTP_POST_READ_PHASE, //0讀取請求phase NGX_HTTP_SERVER_REWRITE_PHASE,//1這個階段主要是處理全局的(server block)的rewrite NGX_HTTP_FIND_CONFIG_PHASE, //2這個階段主要是通過uri來查找相應的location,然后依據loc_conf設置r的相應變量 NGX_HTTP_REWRITE_PHASE, //3這個主要處理location的rewrite NGX_HTTP_POST_REWRITE_PHASE, //4postrewrite,這個主要是進行一些校驗以及收尾工作。以便于交給后面的模塊。

NGX_HTTP_PREACCESS_PHASE, //5比方流控這樣的類型的access就放在這個phase,也就是說它主要是進行一些比較粗粒度的access。

NGX_HTTP_ACCESS_PHASE, //6這個比方存取控制,權限驗證就放在這個phase,一般來說處理動作是交給以下的模塊做的.這個主要是做一些細粒度的access NGX_HTTP_POST_ACCESS_PHASE, //7一般來說當上面的access模塊得到access_code之后就會由這個模塊依據access_code來進行操作 NGX_HTTP_TRY_FILES_PHASE, //8try_file模塊,就是相應配置文件里的try_files指令。可接收多個路徑作為參數。當前一個路徑的資源無法找到,則自己主動查找下一個路徑 NGX_HTTP_CONTENT_PHASE, //9內容處理模塊 NGX_HTTP_LOG_PHASE //10log模塊

每一個階段上能夠注冊handler。處理請求就是執行每一個階段上注冊的handler。Nginx模塊提供的配置指令僅僅會一般僅僅會注冊并執行在當中的某一個處理階段。

比方,set指令屬于rewrite模塊的,執行在rewrite階段,deny和allow執行在access階段。


子請求(subrequest)

事實上在Nginx 世界里有兩種類型的“請求”。一種叫做“主請求”(main request),而還有一種則叫做“子請求”(subrequest)。 所謂“主請求”。就是由 HTTP client從 Nginx 外部發起的請求。比方。從瀏覽器訪問Nginx就是一個“主請求”。 而“子請求”則是由 Nginx 正在處理的請求在 Nginx 內部發起的一種級聯請求。“子請求”在外觀上非常像 HTTP 請求,但實現上卻和 HTTP 協議乃至網絡通信一點兒關系都沒有。它是 Nginx 內部的一種抽象調用,目的是為了方便用戶把“主請求”的任務分解為多個較小粒度的“內部請求”,并發或串行地訪問多個 location 接口。然后由這些 location 接口通力協作,共同完畢整個“主請求”。當然。“子請求”的概念是相對的,不論什么一個“子請求”也能夠再發起很多其它的“子子請求”。甚至能夠玩遞歸調用(即自己調用自己)。

當一個請求發起一個“子請求”的時候,依照 Nginx 的術語,習慣把前者稱為后者的“父請求”(parent request)。

location /main {echo_location /foo; # echo_location發送子請求到指定的locationecho_location /bar; } location /foo {echo foo; } location /bar {echo bar; }

輸出:

$ curl location/main
$ foo ? 03. ?bar

這里,main location就是發送2個子請求,分別到foo和bar。這就類似一種函數調用。

“子請求”方式的通信是在同一個虛擬主機內部進行的。所以 Nginx 核心在實現“子請求”的時候,就僅僅調用了若干個 C 函數,全然不涉及不論什么網絡或者 UNIX 套接字(socket)通信。我們由此能夠看出“子請求”的運行效率是極高的。

協程(Coroutine)

協程類似一種多線程,與多線程的差別有:?

1. 協程并不是os線程,所以創建、切換開銷比線程相對要小。?

2. 協程與線程一樣有自己的棧、局部變量等,可是協程的棧是在用戶進程空間模擬的,所以創建、切換開銷非常小。

3. 多線程程序是多個線程并發運行。也就是說在一瞬間有多個控制流在運行。而協程強調的是一種多個協程間協作的關系,僅僅有當一個協程主動放棄運行權,還有一個協程才干獲得運行權,所以在某一瞬間,多個協程間僅僅有一個在運行。?

4. 因為多個協程時僅僅有一個在執行,所以對于臨界區的訪問不須要加鎖。而多線程的情況則必須加鎖。

?

5. 多線程程序因為有多個控制流。所以程序的行為不可控,而多個協程的運行是由開發人員定義的所以是可控的。?

Nginx的每一個Worker進程都是在epoll或kqueue這種事件模型之上,封裝成協程,每一個請求都有一個協程進行處理。這正好與Lua內建協程的模型是一致的,所以即使ngx_lua須要運行Lua,相對C有一定的開銷,但依舊能保證高并發能力。

?

三. ngx_lua

原理
ngx_lua將Lua嵌入Nginx,能夠讓Nginx運行Lua腳本,而且高并發、非堵塞的處理各種請求。Lua內建協程。這樣就能夠非常好的將異步回調轉換成順序調用的形式。ngx_lua在Lua中進行的IO操作都會托付給Nginx的事件模型。從而實現非堵塞調用。開發人員能夠採用串行的方式編敲代碼,ngx_lua會自己主動的在進行堵塞的IO操作時中斷。保存上下文;然后將IO操作托付給Nginx事件處理機制。在IO操作完畢后,ngx_lua會恢復上下文,程序繼續運行,這些操作都是對用戶程序透明的。

每一個NginxWorker進程持有一個Lua解釋器或者LuaJIT實例,被這個Worker處理的全部請求共享這個實例。

每一個請求的Context會被Lua輕量級的協程切割,從而保證各個請求是獨立的。 ngx_lua採用“one-coroutine-per-request”的處理模型。對于每一個用戶請求,ngx_lua會喚醒一個協程用于執行用戶代碼處理請求,當請求處理完畢這個協程會被銷毀。

?

每一個協程都有一個獨立的全局環境(變量空間),繼承于全局共享的、僅僅讀的“comman data”。所以。被用戶代碼注入全局空間的不論什么變量都不會影響其它請求的處理。而且這些變量在請求處理完畢后會被釋放,這樣就保證全部的用戶代碼都執行在一個“sandbox”(沙箱),這個沙箱與請求具有同樣的生命周期。 得益于Lua協程的支持。ngx_lua在處理10000個并發請求時僅僅須要非常少的內存。依據測試,ngx_lua處理每一個請求僅僅須要2KB的內存,假設使用LuaJIT則會更少。所以ngx_lua非常適合用于實現可擴展的、高并發的服務。



典型應用

官網上列出:?

?

· Mashup’ing and processing outputs of various nginx upstream outputs(proxy, drizzle, postgres, redis, memcached, and etc) in Lua, · doing arbitrarily complex access control and security checks in Luabefore requests actually reach the upstream backends, · manipulating response headers in an arbitrary way (by Lua) · fetching backend information from external storage backends (likeredis, memcached, mysql, postgresql) and use that information to choose whichupstream backend to access on-the-fly, · coding up arbitrarily complex web applications in a content handlerusing synchronous but still non-blocking access to the database backends andother storage, · doing very complex URL dispatch in Lua at rewrite phase, · using Lua to implement advanced caching mechanism for nginxsubrequests and arbitrary locations.

Hello Lua!

?

# nginx.conf worker_processes 4;events {worker_connections 1024; } http {server {listen 80;server_name localhost;location=/lua {content_by_lua ‘ngx.say("Hello, Lua!")';}} }

輸出:
$ curl 'localhost/lua'
Hello,Lua。

這樣就實現了一個非常easy的ngx_lua應用。假設這么簡單的模塊要是用C來開發的話,代碼量預計得有100行左右。從這就能夠看出ngx_lua的開發效率。

Benchmark
通過和nginx訪問靜態文件還有nodejs比較,來看一下ngx_lua提供的高并發能力。 返回的內容都是”Hello World!”,151bytes 通過.ab -n 60000 ? 取10次平均
從圖表中能夠看到,在各種并發條件下ngx_lua的rps都是最高的。而且基本維持在10000rps左右,nginx讀取靜態文件由于會有磁盤io所以性能略差一些,而nodejs是相對最差的。通過這個簡單的測試,能夠看出ngx_lua的高并發能力。 ngx_lua的開發人員也做過一個測試對照nginx+fpm+php和nodejs,他得出的結果是ngx_lua能夠達到28000rps。而nodejs有10000多一點。php則最差僅僅有6000。可能是有些配置我沒有配好導致ngx_lua rps沒那么高。

?

?

ngx_lua安裝

ngx_lua安裝能夠通過下載模塊源代碼,編譯Nginx。可是推薦採用openresty。Openresty就是一個打包程序,包括大量的第三方Nginx模塊,比方HttpLuaModule,HttpRedis2Module,HttpEchoModule等。省去下載模塊。而且安裝很方便。

ngx_openresty bundle: openresty ./configure --with-luajit&& make && make install 默認Openresty中ngx_lua模塊採用的是標準的Lua5.1解釋器。通過--with-luajit使用LuaJIT。
ngx_lua的使用方法
ngx_lua模塊提供了配置指令和Nginx API。

配置指令:在Nginx中使用,和set指令和pass_proxy指令用法一樣。每一個指令都有使用的context。 ? ? ? ?Nginx API:用于在Lua腳本中訪問Nginx變量,調用Nginx提供的函數。 以下舉例說明常見的指令和API。

?



配置指令

set_by_lua和set_by_lua_file

和set指令一樣用于設置Nginx變量而且在rewrite階段運行,僅僅只是這個變量是由lua腳本計算并返回的。
語法:set_by_lua$res <lua-script-str> [$arg1 $arg2 ...]

配置:

location =/adder {set_by_lua $res"local a = tonumber(ngx.arg[1])local b = tonumber(ngx.arg[2])return a + b"$arg_a$arg_b;echo$res; }

輸出:
$ curl 'localhost/adder?a=25&b=75'
$ 100

set_by_lua_file運行Nginx外部的lua腳本,能夠避免在配置文件里使用大量的轉義。

?

配置:

location =/fib {set_by_lua_file $res "conf/adder.lua" $arg_n;echo $res; }</span>

?

adder.lua:

local a=tonumber(ngx.arg[1]) local b=tonumber(ngx.arg[2]) return a + b


輸出:
$ curl 'localhost/adder?a=25&b=75
$ 100
?

access_by_lua和access_by_lua_file

執行在access階段。用于訪問控制。

Nginx原生的allow和deny是基于ip的。通過access_by_lua能完畢復雜的訪問控制。比方。訪問數據庫進行username、password驗證等。

配置:

location /auth {access_by_lua 'if ngx.var.arg_user == "ntes" thenreturnelseNgx.exit(ngx.HTTP_FORBIDDEN)end';echo'welcome ntes'; }

輸出:
$ curl 'localhost/auth?user=sohu'
$ Welcome ntes

$ curl 'localhost/auth?user=ntes'
$ <html>
<head><title>403 Forbidden</title></heda>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>ngx_openresty/1.0.10.48</center>
</body>
</html>
?

rewrite_by_lua和rewrite_by_lua_file

實現url重寫。在rewrite階段運行。

配置:

location =/foo {rewrite_by_lua 'ngx.exec("/bar")';echo'in foo'; }location =/bar {echo'in bar'; }

輸出:
$ curl 'localhost/lua'
$ Hello, Lua!

content_by_lua和content_by_lua_file
?

Contenthandler在content階段運行,生成http響應。因為content階段僅僅能有一個handler。所以在與echo模塊使用時,不能同一時候生效,我測試的結果是content_by_lua會覆蓋echo。這和之前的hello world的樣例是類似的。

?

配置(直接響應):

location =/lua {content_by_lua 'ngx.say("Hello, Lua!")'; }


輸出:
$ curl 'localhost/lua'
$ Hello, Lua!

配置(在Lua中訪問Nginx變量):

location =/hello {content_by_lua 'local who = ngx.var.arg_whongx.say("Hello, ", who, "!")'; }


輸出:
$ curl 'localhost/hello?who=world
$ Hello, world!

Nginx API
Nginx API被封裝ngx和ndk兩個package中。

比方ngx.var.NGX_VAR_NAME能夠訪問Nginx變量。這里著重介紹一下ngx.location.capture和ngx.location.capture_multi。

ngx.location.capture
語法:res= ngx.location.capture(uri, options?) ? ? 用于發出一個同步的,非堵塞的Nginxsubrequest(子請求)。

能夠通過Nginx subrequest向其他location發出非堵塞的內部請求。這些location能夠是配置用于讀取目錄的,也能夠是其他的C模塊,比方ngx_proxy, ngx_fastcgi, ngx_memc, ngx_postgres, ngx_drizzle甚至是ngx_lua自己。 ? ? Subrequest僅僅是模擬Http接口,并沒有額外的Http或者Tcp傳輸開銷,它在C層次上執行,很高效。Subrequest不同于Http 301/302重定向,以及內部重定向(通過ngx.redirection)。

配置:

location =/other {ehco 'Hello, world!'; }# Lua非堵塞IO location =/lua {content_by_lua 'local res = ngx.location.capture("/other")if res.status == 200 thenngx.print(res.body)end'; }


輸出:
$ curl ?'http://localhost/lua'
$ Hello, world!

實際上,location能夠被外部的Http請求調用,也能夠被內部的子請求調用。每一個location相當于一個函數,而發送子請求就類似于函數調用。并且這樣的調用是非堵塞的,這就構造了一個很強大的變成模型,后面我們會看到怎樣通過location和后端的memcached、redis進行非堵塞通信。
ngx.location.capture_multi

語法:res1,res2, ... = ngx.location.capture_multi({ {uri, options?}, {uri, options?}, ...}) ? ? 與ngx.location.capture功能一樣,能夠并行的、非堵塞的發出多個子請求。這種方法在全部子請求處理完畢后返回。而且整個方法的執行時間取決于執行時間最長的子請求,并非全部子請求的執行時間之和。

配置:

# 同一時候發送多個子請求(subrequest) location =/moon {ehco 'moon'; } location =/earth {ehco 'earth'; }location =/lua {content_by_lua 'local res1,res2 = ngx.location.capture_multi({ {"/moon"}, {"earth"} })if res1.status == 200 thenngx.print(res1.body)endngx.print(",")if res2.status == 200 thenngx.print(res2.body)end'; }



輸出:
$ curl ?'http://localhost/lua'
$ moon,earth

注意
在Lua代碼中的網絡IO操作僅僅能通過Nginx Lua API完畢。假設通過標準Lua API會導致Nginx的事件循環被堵塞,這樣性能會急劇下降。 ? ? 在進行數據量相當小的磁盤IO時能夠採用標準Lua io庫,可是當讀寫大文件時這樣是不行的,由于會堵塞整個NginxWorker進程。為了獲得更大的性能。強烈建議將全部的網絡IO和磁盤IO托付給Nginx子請求完畢(通過ngx.location.capture)。 ? ? 以下通過訪問/html/index.html這個文件。來測試將磁盤IO托付給Nginx和通過Lua io直接訪問的效率。 ? ? 通過ngx.location.capture托付磁盤IO:
?

配置:

location / {internal;root html; }location /capture {content_by_lua 'res = ngx.location.capture("/")echo res.body'; }

通過標準lua io訪問磁盤文件:

配置:

location /luaio{content_by_lua 'local io = require("io")local chunk_SIZE = 4096local f = assert(io.open("html/index.html","r"))while true dolocal chunk = f:read(chunk)if not chunk thenbreakendngx.print(chunk)ngx.flush(true)endf:close()'; }


這里通過ab去壓,在各種并發條件下,分別返回151bytes、151000bytes的數據,取10次平均,得到兩種方式的rps。 ? ? 靜態文件:151bytes
1000 3000 5000 7000 10000 ?capture ?11067 8880 8873 8952 9023 ?Lua io ? ? 11379 9724 8938 9705 9561

靜態文件:151000bytes。在10000并發下內存占用情況太嚴重。測不出結果 ? ? ? ?這樣的情況下,文件較小,通過Nginx訪問靜態文件須要額外的系統調用,性能略遜于ngx_lua。


1000 3000 5000 7000 ? ?10000 ?capture ? ?3338 3435 3178 3043 ? ? ? ? / ?Lua io ? ? ?3174 3094 3081 2916 ? ? ? ? /

在大文件的情況。capture就要略好于ngx_lua。 ? ? ?這里沒有對Nginx讀取靜態文件進行優化配置。僅僅是採用了sendfile。

假設優化一下。可能nginx讀取靜態文件的性能會更好一些,這個眼下還不熟悉。

所以,在Lua中進行各種IO時。都要通過ngx.location.capture發送子請求托付給Nginx事件模型,這樣能夠保證IO是非堵塞的。


?

四. 小結

這篇文章簡介了一下ngx_lua的基本使用方法。后一篇會對ngx_lua訪問redis、memcached已經連接池進行具體介紹。
?

五. 進階

在之前的文章中。已經介紹了ngx_lua的一些基本介紹,這篇文章主要著重討論一下怎樣通過ngx_lua同后端的memcached、redis進行非堵塞通信。

Memcached

在Nginx中訪問Memcached須要模塊的支持,這里選用HttpMemcModule,這個模塊能夠與后端的Memcached進行非堵塞的通信。我們知道官方提供了Memcached,這個模塊僅僅支持get操作。而Memc支持大部分Memcached的命令。 Memc模塊採用入口變量作為參數進行傳遞。全部以$memc_為前綴的變量都是Memc的入口變量。

memc_pass指向后端的Memcached Server。

配置:

#使用HttpMemcModule location =/memc {set $memc_cmd $arg_cmd;set $memc_key $arg_key;set $memc_value $arg_val;set $memc_exptime $arg_exptime;memc_pass '127.0.0.1:11211'; }

輸出:
$ curl ?'http://localhost/memc?cmd=set&key=foo&val=Hello'
$ STORED
$ curl ?'http://localhost/memc?

cmd=get&key=foo'
$ Hello

這就實現了memcached的訪問。以下看一下怎樣在lua中訪問memcached。



配置:

#在Lua中訪問Memcached location =/memc {internal; #僅僅能內部訪問set $memc_cmd get;set $memc_key $arg_key;memc_pass '127.0.0.1:11211'; } location =/lua_memc {content_by_lua 'local res = ngx.location.capture("/memc", {args = { key = ngx.var.arg_key }})if res.status == 200 thenngx.say(res.body)end'; }


輸出:
$ curl ?'http://localhost/lua_memc?

key=foo'
$ Hello

通過lua訪問memcached。主要是通過子請求採用一種類似函數調用的方式實現。

首先。定義了一個memc location用于通過后端memcached通信,就相當于memcached storage。

?

因為整個Memc模塊時非堵塞的。ngx.location.capture也是非堵塞的,所以整個操作非堵塞。

?

Redis

訪問redis須要HttpRedis2Module的支持,它也能夠同redis進行非堵塞通行。只是,redis2的響應是redis的原生響應,所以在lua中使用時,須要解析這個響應。能夠採用LuaRedisModule,這個模塊能夠構建redis的原生請求。并解析redis的原生響應。

配置:

#在Lua中訪問Redis location =/redis {internal; #僅僅能內部訪問redis2_query get $arg_key;redis2_pass '127.0.0.1:6379'; } location =/lua_redis {#須要LuaRedisParsercontent_by_lua 'local parser = require("redis.parser")local res = ngx.location.capture("/redis", {args = { key = ngx.var.arg_key }})if res.status == 200 thenreply = parser.parse_reply(res.body)ngx.say(reply)end'; }


輸出:
$ curl ?'http://localhost/lua_redis?key=foo'
$ Hello

和訪問memcached類似。須要提供一個redis storage專門用于查詢redis,然后通過子請求去調用redis。

Redis Pipeline
在實際訪問redis時,有可能須要同一時候查詢多個key的情況。

我們能夠採用ngx.location.capture_multi通過發送多個子請求給redis storage,然后在解析響應內容。

可是,這會有個限制,Nginx內核規定一次能夠發起的子請求的個數不能超過50個。所以在key個數多于50時,這樣的方案不再適用。
幸好redis提供pipeline機制。能夠在一次連接中運行多個命令,這樣能夠降低多次運行命令的往返時延。

?

client在通過pipeline發送多個命令后。redis順序接收這些命令并運行,然后依照順序把命令的結果輸出出去。在lua中使用pipeline須要用到redis2模塊的redis2_raw_queries進行redis的原生請求查詢。
?

配置:

#在Lua中訪問Redis location =/redis {internal; #僅僅能內部訪問redis2_raw_queries $args$echo_request_body;redis2_pass '127.0.0.1:6379'; }location =/pipeline {content_by_lua 'conf/pipeline.lua'; }

pipeline.lua

-- conf/pipeline.lua file local parser=require(‘redis.parser’) local reqs={{‘get’, ‘one’}, {‘get’, ‘two’} } -- 構造原生的redis查詢。get one\r\nget two\r\n local raw_reqs={} for i, req in ipairs(reqs)dotable.insert(raw_reqs, parser.build_query(req)) end local res=ngx.location.capture(‘/redis?

’..#reqs, {body=table.concat(raw_reqs, ‘’)}) if res.status and res.body then -- 解析redis的原生響應 local replies=parser.parse_replies(res.body, #reqs) for i, reply in ipairs(replies)do ngx.say(reply[1]) end end


輸出:
$ curl ?'http://localhost/pipeline'
$ first
? second
?

Connection Pool

前面訪問redis和memcached的樣例中。在每次處理一個請求時。都會和后端的server建立連接。然后在請求處理完之后這個連接就會被釋放。

這個過程中,會有3次握手、timewait等一些開銷。這對于高并發的應用是不可容忍的。這里引入connection pool來消除這個開銷。 連接池須要HttpUpstreamKeepaliveModule模塊的支持。



配置:

http {# 須要HttpUpstreamKeepaliveModuleupstream redis_pool {server 127.0.0.1:6379;# 能夠容納1024個連接的連接池keepalive 1024 single;}server {location=/redis {…redis2_pass redis_pool;}} }


這個模塊提供keepalive指令。它的context是upstream。我們知道upstream在使用Nginx做反向代理時使用。實際upstream是指“上游”。這個“上游”能夠是redis、memcached或是mysql等一些server。upstream能夠定義一個虛擬server集群,而且這些后端的server能夠享受負載均衡。keepalive 1024就是定義連接池的大小,當連接數超過這個大小后,興許的連接自己主動退化為短連接。連接池的使用非常easy,直接替換掉原來的ip和port號就可以。 ? ? ?有人以前測過,在沒有使用連接池的情況下,訪問memcached(使用之前的Memc模塊),rps為20000。在使用連接池之后,rps一路飆到140000。在實際情況下。這么大的提升可能達不到,可是基本上100-200%的提高還是能夠的。
?

小結

這里對memcached、redis的訪問做個小結。

1. Nginx提供了強大的編程模型。location相當于函數,子請求相當于函數調用,而且location還能夠向自己發送子請求,這樣構成一個遞歸的模型,所以採用這樣的模型實現復雜的業務邏輯。 2. Nginx的IO操作必須是非堵塞的,假設Nginx在那阻著,則會大大減少Nginx的性能。所以在Lua中必須通過ngx.location.capture發出子請求將這些IO操作托付給Nginx的事件模型。

3. 在須要使用tcp連接時,盡量使用連接池。

這樣能夠消除大量的建立、釋放連接的開銷。

?

參考:

?

http://wiki.nginx.org/HttpUpstreamKeepaliveModule

http://wiki.nginx.org/HttpRedis2Module

http://wiki.nginx.org/HttpMemcModule

?

原文:

http://blog.angryfox.com/?p=2063

分類:?Nginx&Openresty

總結

以上是生活随笔為你收集整理的用lua扩展你的Nginx(整理)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产成在线观看免费视频 | 亚洲国产经典视频 | 又湿又紧又大又爽a视频国产 | 久草a在线| 精品福利网站 | 中文字幕国内精品 | 日本婷婷色 | 久久久久久久久久久久久国产精品 | 久久国产精品免费视频 | 五月激情亚洲 | 91精品久久久久久综合五月天 | 亚洲成人精品在线 | 久热国产视频 | 欧洲视频一区 | 久久视频免费 | 婷婷丁香在线 | 日韩在线视频一区 | 久久综合九色综合欧美就去吻 | 高清不卡一区二区在线 | 国产亚洲资源 | 亚洲一区日韩 | 久草视频在线看 | 国产精成人品免费观看 | 国产精品久久久久久久久久尿 | 国产免码va在线观看免费 | 久草在线免费看视频 | 日韩中文字幕免费在线观看 | 亚洲一区av | 99视频精品全部免费 在线 | 久久人人添人人爽添人人88v | 激情av资源| 国产美女免费 | 日韩欧美一区二区在线观看 | 国产韩国日本高清视频 | 国产尤物一区二区三区 | 日韩在线激情 | 黄色天堂在线观看 | 在线观看精品国产 | 福利视频网站 | 久久久久久电影 | 亚洲va在线va天堂 | 国产一级特黄毛片在线毛片 | 91亚洲在线 | 亚洲性少妇性猛交wwww乱大交 | 国产伦理一区二区 | 激情综合五月婷婷 | 色婷婷久久 | 国产成人久久精品一区二区三区 | 精品999在线观看 | 视频在线观看入口黄最新永久免费国产 | 精品在线免费视频 | 中文字幕精品一区 | 五月天色丁香 | 国产原创中文在线 | 在线观看精品黄av片免费 | 中文字幕欧美日韩va免费视频 | www狠狠操 | 久久成人在线视频 | 天天插狠狠干 | 中文字幕在线播放第一页 | 国产精品嫩草69影院 | 国产精品亚洲片在线播放 | 国产91精品一区二区 | 久久久精品网站 | 国产成年人av | 欧美一级黄大片 | 色五月色开心色婷婷色丁香 | 九九九九精品九九九九 | 天堂在线一区二区 | 亚洲精品免费播放 | 99色视频在线 | 午夜av大片 | 免费在线日韩 | 久99久精品视频免费观看 | 国产成人777777 | 国产资源免费 | 在线观看 国产 | 99这里只有精品视频 | 国产精品一区欧美 | 久久精品视频播放 | 国产亚洲日 | 国产成人av在线影院 | 国产成人中文字幕 | 国产午夜精品一区二区三区在线观看 | 91大神dom调教在线观看 | 97超碰超碰 | 超薄丝袜一二三区 | 国产精品一区二区三区视频免费 | 国内精品久久久久久 | 韩国精品在线观看 | 男女拍拍免费视频 | 日韩黄色在线观看 | 九九热精品视频在线播放 | 亚洲国产日韩欧美 | 日韩二区三区在线观看 | 成人免费在线播放视频 | av日韩在线网站 | 久久免费视频一区 | 国产精品电影一区二区 | 99热精品国产一区二区在线观看 | 国产 成人 久久 | 久久免费的视频 | 久久色亚洲 | 日韩欧美在线观看一区二区三区 | 欧美午夜久久 | av在线不卡观看 | www亚洲精品 | 毛片的网址 | 国产91免费在线观看 | 新版资源中文在线观看 | 麻豆一区在线观看 | 日日夜夜中文字幕 | 在线视频观看91 | 久久久久99999| 国产精品成人aaaaa网站 | 91一区二区三区在线观看 | 五月婷婷综| 九九激情视频 | 日韩欧美在线观看 | 日韩动态视频 | 久久永久视频 | 日韩av中文| 黄毛片在线观看 | 色多多在线观看 | 国产一区国产二区在线观看 | 中文字幕在线观看三区 | 网站你懂的 | 亚洲精品美女在线观看 | 成人免费视频网址 | www99久久| 91在线porny国产在线看 | 一区二区三区在线视频111 | 欧美精品久久99 | 久久九九久久九九 | 日韩久久精品一区二区三区下载 | 免费a视频 | 日韩欧美亚州 | 97在线观看免费视频 | 日日操日日 | 亚洲日本va午夜在线影院 | 国产免费观看久久黄 | 久久久电影 | 一区二区三区免费 | 中文字幕专区高清在线观看 | 久久久久久久久久久福利 | 丝袜美腿亚洲 | 激情欧美网 | 色a综合 | 国产精品成人在线观看 | 久久精品亚洲 | 日韩高清精品免费观看 | 91免费看黄色| 中文视频在线 | 欧美激情精品久久久久久免费 | 亚洲aⅴ免费在线观看 | 色中色资源站 | 午夜婷婷在线播放 | 激情视频免费观看 | 在线成人一区 | 日韩偷拍精品 | 久久婷婷一区二区三区 | 国产日本亚洲高清 | 99在线免费观看视频 | 国产精品国产三级国产不产一地 | 国产一区二区三区免费观看视频 | 久久免费视频在线观看30 | 日韩三级视频在线看 | 成人黄色电影免费观看 | 亚洲人成在线电影 | av电影在线不卡 | 夜夜视频 | 99 色 | 91精品久久久久久综合五月天 | 亚洲永久精品视频 | 久久免费美女视频 | 成年人看片网站 | 亚洲精品在线免费观看视频 | 精品福利国产 | 91成人免费观看视频 | 欧美日韩在线视频免费 | 成人免费看片98欧美 | 国产成人精品一区二 | 久久人人97超碰精品888 | 婷婷深爱网 | 99色精品视频 | 2018亚洲男人天堂 | 久久久久久久网 | 91视频高清免费 | 婷婷狠狠操 | 亚洲精品自拍视频在线观看 | 亚洲精品字幕在线观看 | 欧美视频99 | 国产精品久久久久久久电影 | 在线免费看片 | 日韩精品1区2区 | 日韩电影一区二区在线观看 | 国产黄影院色大全免费 | 久久久久久久久久久久久9999 | 亚洲成人频道 | 中文字幕在线播放日韩 | 久草在线资源观看 | 国内成人精品2018免费看 | 麻豆精品在线 | 国产高清在线永久 | 国内精品久久久久久久久久久久 | 亚洲视频999| 久久av网址 | 国产一二区精品 | 在线看成人av | 日韩三区在线观看 | 视频一区久久 | 色多视频在线观看 | 国产成人a v电影 | 国产91在线观 | 8090yy亚洲精品久久 | 久久久亚洲国产精品麻豆综合天堂 | 射九九 | 五月天婷婷狠狠 | 色多多污污在线观看 | 麻豆视频免费看 | 久久香蕉国产精品麻豆粉嫩av | 91香蕉视频在线下载 | av在线电影播放 | 超碰日韩在线 | 人人dvd| 亚洲人成网站精品片在线观看 | 免费观看完整版无人区 | 国产黄在线 | 久久精品日本啪啪涩涩 | 国产精品久久久999 国产91九色视频 | 欧洲色吧 | 久久草在线精品 | 亚洲国产精品一区二区尤物区 | 热久在线 | 国产大尺度视频 | 成人av免费播放 | 色爱区综合激月婷婷 | 亚洲视频免费在线观看 | 日韩r级在线 | 91精品一区国产高清在线gif | v片在线播放 | 色偷偷888欧美精品久久久 | 亚洲欧美久久 | 国产一卡在线 | 久久99国产精品免费 | 在线播放日韩av | 亚洲综合少妇 | 日韩av中文在线 | 国产一区二区电影在线观看 | 亚州人成在线播放 | 久久新视频 | 91精品啪在线观看国产线免费 | 成人免费视频观看 | 高清一区二区三区av | 日韩在线不卡视频 | 97干com| 在线免费视频一区 | 韩日av一区二区 | 久久久久久久久久亚洲精品 | 最新久久久 | 456免费视频 | 国产精品大片在线观看 | 日日夜夜免费精品视频 | 最新日本中文字幕 | 在线观看 国产 | 久久免费毛片视频 | 婷婷中文字幕 | 成人aⅴ视频 | 黄色成人av | 五月婷婷丁香 | 91精品国产92久久久久 | 在线韩国电影免费观影完整版 | 国产精品久久久久亚洲影视 | 色婷婷激情电影 | 91大神一区二区三区 | 中文字幕超清在线免费 | 国产一级在线免费观看 | 99精品视频精品精品视频 | 91日韩精品视频 | 久草视频在线资源站 | 麻豆视频国产 | 青青草华人在线视频 | 久久精品日本啪啪涩涩 | 国产91精品一区二区麻豆亚洲 | 久久久久久久久久久影视 | 四虎5151久久欧美毛片 | 911久久香蕉国产线看观看 | 在线观看中文字幕第一页 | 在线天堂中文在线资源网 | 国产手机在线观看 | 中文字幕一区二区三区精华液 | 国产综合小视频 | 久久麻豆精品 | 久久一区二区三区超碰国产精品 | 中文字幕观看av | 2018亚洲男人天堂 | 免费黄色在线网站 | 国产不卡在线观看视频 | 亚洲精品九九 | 日日摸日日添夜夜爽97 | 日日干夜夜爱 | 欧美激情精品久久久久久免费 | 久久久国产99久久国产一 | 国产精品一区二区三区在线看 | 亚州精品国产 | 成人影视免费 | 正在播放国产精品 | 国产一区久久久 | 国产精品成人自产拍在线观看 | 99亚洲视频 | 天天爽夜夜操 | 久久狠狠亚洲综合 | 色欧美成人精品a∨在线观看 | 日韩欧美精品在线观看 | 国产精品第54页 | av电影免费在线播放 | 天天操天天操 | 国产激情久久久 | 国产一级在线观看视频 | 国产婷婷精品av在线 | 久久这里只有精品23 | 97视频人人澡人人爽 | 99久久久国产精品免费99 | 久久国产女人 | 夜夜爽88888免费视频4848 | 欧美男男tv网站 | 国产成人在线播放 | 成人av片免费看 | 国产无套精品久久久久久 | 色婷婷激情网 | 国产精品亚州 | 亚洲春色综合另类校园电影 | 99亚洲视频 | 久久精品久久精品久久精品 | 欧美精品久久 | 久久精品一 | 久久福利 | 精品国产伦一区二区三区观看方式 | 91探花在线 | 丁香5月婷婷久久 | 毛片永久新网址首页 | 超碰国产97| 天天草综合 | 91精品国产亚洲 | 在线视频日韩精品 | 美女网站久久 | 99久久夜色精品国产亚洲 | 免费观看成人网 | 国产中文字幕视频在线观看 | 激情综合网婷婷 | 亚洲国产成人在线 | 五月婷婷,六月丁香 | 婷婷激情5月天 | 国产对白av | 亚洲精品黄色在线观看 | 日日干天天爽 | 国产欧美综合视频 | 婷婷在线色 | 深爱婷婷网 | 欧美在线99 | 国产精品免费在线视频 | 久久久久久久久艹 | 久草在线资源免费 | 久久99国产精品自在自在app | 国产中文字幕三区 | www91在线观看 | 国产在线黄色 | 久久线视频| 日韩在线电影观看 | 高清中文字幕 | 中文字幕a在线 | 视频一区二区精品 | 在线观看v片 | 粉嫩一二三区 | 热久久影视 | 久久免费视频播放 | 久久精品高清 | 综合天堂av久久久久久久 | 一级理论片在线观看 | 日韩色视频在线观看 | 中文字幕在线观看国产 | 欧亚日韩精品一区二区在线 | 香蕉久久久久久久 | 日韩一级黄色片 | 亚洲精品麻豆视频 | 一级性av | 一级c片 | 成人在线免费观看视视频 | 久草网视频 | 国产成人综合在线观看 | 天天操天天操天天操天天操天天操天天操 | 国产视频一级 | 午夜精品三区 | 日本久久99 | 久久久久免费观看 | 日韩高清精品免费观看 | 99国产一区二区三精品乱码 | 久草在线视频首页 | 五月香视频在线观看 | 久久一精品 | 在线观看不卡视频 | 91精品视频在线观看免费 | 国产黄色免费电影 | 五月婷婷在线观看视频 | 最新极品jizzhd欧美 | 免费国产在线精品 | 日本中出在线观看 | 日韩一区二区免费播放 | 丁香久久五月 | 国产精品久久久一区二区 | 久久天堂影院 | 黄a在线 | 国产麻豆果冻传媒在线观看 | 久久国产精品免费一区 | 久久久国产精品人人片99精片欧美一 | 亚洲国产一区二区精品专区 | 91麻豆国产福利在线观看 | 亚洲自拍av在线 | 亚洲黄色免费网站 | 中文字幕免费 | 亚洲二区精品 | 在线中文字母电影观看 | 97网站| 99视频导航| 99九九热只有国产精品 | 成年人在线 | 99视频在线精品国自产拍免费观看 | 超碰97人人干 | 亚洲一二三久久 | 狠狠色狠狠色综合日日92 | 91在线入口 | 9999免费视频 | 视色网站 | 亚洲一区网 | av不卡免费在线观看 | 亚洲国产成人精品在线 | 亚洲精品久久久久58 | 免费观看一区二区三区视频 | 在线影院av | 国产亚洲成av人片在线观看桃 | www日韩高清| 成人国产精品免费观看 | 69精品| 国产一级二级在线观看 | 久久婷婷一区 | 日韩精品在线播放 | 国产在线观看你懂得 | 天天摸日日摸人人看 | av电影免费在线看 | 国产视频精品视频 | 91在线亚洲| 深夜免费小视频 | www国产亚洲精品久久麻豆 | 日韩大片免费观看 | 69av在线播放 | 久久伊99综合婷婷久久伊 | 日韩在线电影观看 | 天天天操天天天干 | 日韩有码中文字幕在线 | 99国产精品视频免费观看一公开 | 热久久99这里有精品 | 国产 一区二区三区 在线 | 国产美女视频免费 | 91精品国产福利在线观看 | 青青河边草免费直播 | 国产资源在线播放 | 国产中文欧美日韩在线 | 中日韩三级视频 | 91亚洲精品久久久久图片蜜桃 | 伊人五月天.com | 欧美日韩免费看 | 日韩肉感妇bbwbbwbbw | 波多野结衣日韩 | 人人射人人插 | 天天色天天操天天爽 | 欧美综合国产 | 91av久久 | 女人18片毛片90分钟 | 欧美日韩99 | 97在线免费视频观看 | 国产精品美女久久久久久网站 | 亚洲精品国偷自产在线99热 | 黄a网| 五月婷婷综合在线视频 | 麻豆激情电影 | 爱色婷婷 | 久久一区二区三区日韩 | 日韩精品欧美视频 | av电影在线不卡 | 日韩欧美精选 | 精选久久 | 久久99热精品这里久久精品 | 天天在线视频色 | 91黄色小网站| 亚洲天天摸日日摸天天欢 | www免费视频com━ | 18av在线视频| 黄色看片 | 蜜桃av观看 | 国产手机视频在线播放 | 亚洲aⅴ在线观看 | 久草在线一免费新视频 | 一区二区视频在线免费观看 | 国产手机在线精品 | 99在线高清视频在线播放 | 日本精品久久 | 美女视频黄免费网站 | 久久久久久久看片 | 国产一区二区三精品久久久无广告 | 在线国产视频观看 | 国产91丝袜在线播放动漫 | 香蕉网站在线观看 | 国产黄色免费在线观看 | av在线超碰 | 黄色小说免费观看 | 国产高清视频在线观看 | 黄色大全免费网站 | 色丁香色婷婷 | 久久久久www | www.久久久.cum | 狠狠操狠狠插 | 高潮毛片无遮挡高清免费 | 五月天婷亚洲天综合网精品偷 | 国产精品一区二区在线看 | 黄色aa久久 | 日韩丝袜视频 | 久久免费在线观看 | 国产一级免费在线观看 | 一本色道久久综合亚洲二区三区 | 亚洲精品国产自产拍在线观看 | 怡红院av | 国产精品久久久久久高潮 | 九色在线| 午夜精品久久久久久久99 | 狠狠色丁香久久婷婷综合五月 | 高清一区二区 | 久久精品牌麻豆国产大山 | 欧美一区二区视频97 | 成人国产精品一区 | 精品久久国产一区 | 久久久久一区二区三区四区 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 在线最新av | 99情趣网视频 | 亚洲欧美国产日韩在线观看 | 亚洲精品国产品国语在线 | 91在线免费视频 | 91精品专区 | 国产91av视频在线观看 | 中文字幕资源网 | 超碰在线97国产 | 国产资源在线免费观看 | 欧美日韩国产精品久久 | 久久99精品波多结衣一区 | 久久综合九色综合网站 | 精品成人在线 | 午夜精品福利一区二区三区蜜桃 | 婷婷六月在线 | 狠狠五月婷婷 | 射久久 | 久草在线在线视频 | 精品一区二区6 | 久av电影 | 久久久久久精 | av电影中文字幕 | 中文字幕在线影院 | 99视频一区二区 | 婷婷播播网 | 亚洲国产中文在线 | 一级黄色片毛片 | 亚洲涩涩网| 麻豆视频国产 | 久久久午夜精品理论片中文字幕 | 欧美日韩在线观看不卡 | 久久精品国产免费看久久精品 | 麻豆免费精品视频 | 国产欧美久久久精品影院 | 色婷婷骚婷婷 | 久久国产剧场电影 | 在线观看一区 | 伊人天天狠天天添日日拍 | 国产精品久久三 | 亚洲国产高清在线 | 久精品视频免费观看2 | 中文字幕 影院 | 国产精品乱码久久久 | 九九99靖品 | 亚洲精品黄网站 | 黄色电影在线免费观看 | 五月婷婷黄色网 | 久久久久蜜桃 | 久久久不卡影院 | 亚洲va欧美va人人爽 | 玖玖在线看| 国产第一页精品 | 精品在线观看一区二区三区 | 欧美一级电影在线观看 | 97综合在线 | 狠狠操91| aaa日本高清在线播放免费观看 | 欧美日韩裸体免费视频 | 国产91九色蝌蚪 | 日本久久91| 九热精品 | 久热久草在线 | 天堂视频一区 | 日韩成人在线免费观看 | 黄网站app在线观看免费视频 | 久久久久国产精品午夜一区 | 国产黄色一级片在线 | 中文字幕视频播放 | 亚洲日本中文字幕在线观看 | 色 中文字幕 | 国产中文字幕在线视频 | 国产区精品区 | 最近乱久中文字幕 | 欧美一区在线看 | 青草视频在线看 | 正在播放亚洲精品 | 五月激情天 | 免费色视频网址 | 国产午夜不卡 | 国产一区二区成人 | 亚洲视频999 | 日韩影视在线观看 | 高清精品视频 | 久久国产精品网站 | 最近免费在线观看 | 免费三级a| 在线观看国产日韩 | 丁香六月中文字幕 | 久久久99精品免费观看 | av在线8| 国产精品亚州 | 亚洲影院一区 | 亚洲一区二区麻豆 | 四虎免费在线观看 | 伊人av综合 | 九九日韩| 天天色成人 | av专区在线 | 国产麻豆果冻传媒在线观看 | 中文字幕日韩有码 | 深爱激情av | 久久久久久蜜av免费网站 | 韩国三级在线一区 | 国产一级性生活 | 欧美一级片免费播放 | 成人性生爱a∨ | www亚洲视频 | 亚洲激情久久 | 91精品区 | 久久免费视屏 | 97视频免费观看 | 欧美大片www| 久久久免费电影 | 狂野欧美激情性xxxx欧美 | 亚洲精品视频在线 | 成年人视频免费在线播放 | 国产精品理论片在线播放 | 婷婷色中文网 | 亚洲成人中文在线 | 狠狠操狠狠操 | 人人爱人人添 | 久久久高清视频 | 亚洲国产精品久久久久婷婷884 | 亚洲成色777777在线观看影院 | 国产午夜在线 | 婷婷午夜激情 | 一级a性色生活片久久毛片波多野 | 天天射综合网站 | 久草在线免 | 久久国产精品视频免费看 | 久久国产成人午夜av影院潦草 | 综合亚洲视频 | 久草在线资源网 | 久久伊人综合 | 中文字幕日本在线观看 | 九草在线观看 | 亚洲视频一级 | 黄色软件在线观看 | 亚洲 中文 在线 精品 | 久久精品99国产国产 | 亚洲综合视频在线 | 欧美精品资源 | 国产精品免费成人 | 97视频在线观看播放 | 夜夜躁天天躁很躁波 | 色5月婷婷 | 国产精品av免费 | 西西www4444大胆在线 | 超碰97免费在线 | 天堂在线v | 欧美 日韩 国产 中文字幕 | 日韩网站视频 | 一区二区三区四区免费视频 | 精品亚洲一区二区 | 日本深夜福利视频 | 99精品视频99 | 国产精品久久嫩一区二区免费 | 欧美不卡视频在线 | 亚洲黄色精品 | 国产 在线 高清 精品 | 久久久久色 | 黄色综合 | 免费黄a| 久草视频首页 | 久久婷五月| 亚洲欧美日本国产 | 日韩免费在线网站 | 中文字幕免费一区 | 欧美日韩免费看 | 精品国产乱码久久久久久久 | 又黄又色又爽 | 国产在线观看中文字幕 | 亚洲精品免费看 | www.大网伊人 | 视频三区 | 福利二区视频 | 日日天天av | 国产精久久 | av福利超碰网站 | 成人av资源 | av片中文字幕 | 美女黄网久久 | 成人资源在线观看 | 国产视频 亚洲视频 | 午夜久久影院 | 超碰在线人人爱 | 天天精品视频 | 又黄又爽又色无遮挡免费 | 激情婷婷久久 | 色吊丝在线永久观看最新版本 | 欧美在线观看禁18 | 久久视频免费观看 | av动态图片 | 国产69精品久久99的直播节目 | 在线观看免费成人 | 成人av免费网站 | 国产精品免费久久久久久久久久中文 | 在线观看视频亚洲 | 久久免费国产视频 | 日韩电影一区二区三区 | 成人一级在线观看 | 久久激情五月婷婷 | 久久国产色| 97电影网手机版 | 色网站在线免费观看 | 成人a在线观看高清电影 | av超碰在线 | 91视频在线国产 | av高清网站在线观看 | 精品国产乱码久久久久久1区二区 | 久草久草视频 | 亚洲精品456在线播放 | 中文字幕一区在线 | 天天操天天干天天综合网 | 黄色片网站免费 | 婷婷午夜激情 | 一区二区三区影院 | 欧美日韩三级在线观看 | 激情综合色综合久久综合 | 99精品乱码国产在线观看 | 精品99免费 | 99久久婷婷国产综合精品 | 91精品一区二区在线观看 | 色婷婷狠狠操 | 日韩黄色中文字幕 | 免费日韩电影 | 国产一区二区视频在线播放 | 亚洲闷骚少妇在线观看网站 | 日韩啪啪小视频 | 国产伦精品一区二区三区在线 | 亚洲国产wwwccc36天堂 | 日韩精品一区二区三区电影 | 久久精品日产第一区二区三区乱码 | 91人人澡人人爽人人精品 | 中文字幕在线精品 | 久久综合爱 | 国产精品ⅴa有声小说 | www蜜桃视频 | 黄色av网站在线免费观看 | 四虎伊人 | 九九亚洲视频 | 久久免费视频一区 | 91大片网站| 中文在线中文资源 | 国产区在线视频 | 日韩免费一区二区 | 中文字幕免费久久 | 国产视频日韩 | 亚洲天堂网视频在线观看 | a久久久久| 欧美色道 | 亚洲国产成人精品久久 | 麻豆视频在线免费观看 | 日韩三级视频在线观看 | 久久久亚洲电影 | 日韩毛片在线播放 | 欧美精品久久久久久久久免 | 九七人人干 | 久草在线资源免费 | 国产精品一区专区欧美日韩 | 99中文字幕在线观看 | 欧美精品v国产精品v日韩精品 | 亚洲一区二区视频 | 欧美日韩一区二区在线观看 | 99久久久久成人国产免费 | 日韩视频中文字幕在线观看 | 免费a v观看 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 亚洲国产精品电影 | 国产麻豆成人传媒免费观看 | 久久久综合香蕉尹人综合网 | 美女视频黄免费的久久 | 黄色一级在线观看 | 国产一区二区手机在线观看 | 久草视频在线新免费 | 欧美日韩在线看 | 丁香电影小说免费视频观看 | 粉嫩av一区二区三区四区 | 亚a在线 | 欧美在线视频一区二区三区 | 在线视频观看你懂的 | 精品久久福利 | 成 人 黄 色 视频免费播放 | 91精品一区二区三区久久久久久 | 91精品国产福利在线观看 | 国产中文字幕一区二区 | 国产一性一爱一乱一交 | 美女视频永久黄网站免费观看国产 | 国产黄在线 | 婷婷av电影 | 99视频在线看 | 亚洲成人家庭影院 | 99在线精品免费视频九九视 | 久久精品一二三区白丝高潮 | japanesexxx乱女另类 | 99久久99久久免费精品蜜臀 | 日本中文字幕观看 | 日韩精品视频免费 | 91成人在线观看高潮 | 亚洲人在线7777777精品 | 久久国语 | 中文字幕视频观看 | 国产麻豆剧传媒免费观看 | 免费在线观看国产精品 | av福利第一导航 | 蜜臀av在线一区二区三区 | 国产91精品在线播放 | 免费观看91视频 | 在线视频一区二区 | 国精产品满18岁在线 | 国产一二区视频 | 免费网站在线观看人 | 三三级黄色片之日韩 | 国产一区二区在线播放视频 | 天天干视频在线 | 婷婷免费在线视频 | 免费观看一级一片 | 夜添久久精品亚洲国产精品 | 欧美一级视频在线观看 | av在线电影网站 | 精品国产伦一区二区三区观看说明 | 激情偷乱人伦小说视频在线观看 | 日韩精品中文字幕久久臀 | 毛片美女网站 | 欧美色精品天天在线观看视频 | 欧美少妇影院 | 国产一区二区久久精品 | 免费一级片久久 | 手机成人在线电影 | 黄色毛片观看 | 精品福利视频在线 | 人人射人人澡 | 国产精品麻豆免费版 | 久久成人国产精品免费软件 | 天天射综合 | 亚洲狠狠干 | 缴情综合网五月天 | av黄色在线观看 | 久久精品在线免费观看 | 亚洲精品影院在线观看 | av不卡中文字幕 | 国产精品久久久99 | 亚洲视频资源在线 | 日韩av电影国产 | 国产精品资源在线 | 国产午夜三级一区二区三 | 日韩中文字幕a | 国产欧美精品一区二区三区四区 | 日日插日日干 | 这里只有精品视频在线 | 午夜久久影视 | 日韩精品一区二区三区在线视频 | 二区三区毛片 | 在线免费观看国产精品 | 日日日日 | 国产成人精品综合久久久久99 | 日韩视频免费观看高清 | 一区二区三区免费在线观看视频 | 91免费在线视频 | 亚洲精品中文在线 | 久久久久久免费毛片精品 | 久久资源总站 | 成人国产精品久久久 | 五月天色中色 | 国产一区二区中文字幕 | 久久撸在线视频 | av超碰在线 | 成人久久视频 | 97在线视频网站 | 国内少妇自拍视频一区 | 高清精品视频 | 久久专区| 日韩视频图片 | 在线一二区 | 久草网在线观看 | 亚洲欧美国产日韩在线观看 | 久久99精品国产99久久 | 欧美日韩另类在线观看 | 美女久久久久久久久久 | 毛片在线网 | 香蕉视频国产在线观看 | 一级性视频 | 亚洲狠狠操 | 黄网站色欧美视频 | 精品久久久久国产 | 六月丁香激情综合 | 精品国产一区二区三区在线 | 狠狠操91 | 免费观看av网站 | 欧美一级大片在线观看 | h网站免费在线观看 | 免费av网址在线观看 | 99热国产在线中文 | 亚洲成人精品在线 | 婷婷国产一区二区三区 | 久久成人免费 | 国产不卡精品视频 | 久福利 | 999久久精品| 日韩中文字幕在线看 | 97精产国品一二三产区在线 | 免费在线观看成人 | 欧美在线99 | 极品国产91在线网站 | 日韩一级理论片 | 欧美专区国产专区 | 综合网五月天 | 狠狠天天 | 四虎在线永久免费观看 | 日日夜夜狠狠 | 成人精品一区二区三区中文字幕 | 五月开心网 | 在线亚洲人成电影网站色www | 国产成人不卡 | 探花视频在线观看+在线播放 | 亚洲国产久 | www.99热精品| 中文字幕成人一区 | 日韩www在线 | 日韩免费在线观看视频 | 国产精品99视频 | 色av男人的天堂免费在线 | 亚洲日本色 | 欧美精品久久久久久 | 一区二区精品视频 | 日韩最新在线视频 | 久久成年视频 | 欧美成人基地 | 久久人人97超碰com | 中文字幕在线观看播放 | 在线免费观看黄色av | 国产在线一区观看 | 久久96国产精品久久99漫画 | 精品成人久久 | 97涩涩视频 | 在线免费观看黄色大片 | 精品国产伦一区二区三区观看体验 | 菠萝菠萝蜜在线播放 | 九九影视理伦片 | a天堂一码二码专区 | 免费v片| 亚洲精品777| 久久人人爽人人爽人人片 | 欧美一区日韩一区 | 欧美日韩国产在线精品 | 九九热免费在线观看 | 国产一区二区三区视频在线 | 在线你懂的视频 | 国产成人精品一区二区三区免费 | 日韩中文在线播放 | 亚洲一区日韩精品 | 久久免费视频国产 | 三级在线视频播放 | 日韩黄色大片在线观看 | 国产69精品久久久久久 |