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

歡迎訪問 生活随笔!

生活随笔

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

Nginx

第二章 OpenResty(Nginx+Lua)开发入门

發布時間:2024/9/20 Nginx 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二章 OpenResty(Nginx+Lua)开发入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Nginx入門

本文目的是學習Nginx+Lua開發,對于Nginx基本知識可以參考如下文章:

nginx啟動、關閉、重啟

http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html

agentzh 的 Nginx 教程

http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html

Nginx+Lua入門

http://17173ops.com/2013/11/01/17173-ngx-lua-manual.shtml

nginx 配置指令的執行順序

http://zhongfox.github.io/blog/server/2013/05/15/nginx-exec-order/

nginx與lua的執行順序和步驟說明

http://www.mrhaoting.com/?p=157

Nginx配置文件nginx.conf中文詳解

http://www.ha97.com/5194.html

Tengine的Nginx開發從入門到精通

http://tengine.taobao.org/book/

官方文檔

http://wiki.nginx.org/Configuration

?

Lua入門

本文目的是學習Nginx+Lua開發,對于Lua基本知識可以參考如下文章:

Lua簡明教程

http://coolshell.cn/articles/10739.html

lua在線lua學習教程

http://book.luaer.cn/

Lua 5.1 參考手冊

http://www.codingnow.com/2000/download/lua_manual.html

Lua5.3 參考手冊

http://cloudwu.github.io/lua53doc/

Nginx Lua API

和一般的Web Server類似,我們需要接收請求、處理并輸出響應。而對于請求我們需要獲取如請求參數、請求頭、Body體等信息;而對于處理就是調用相應的Lua代碼即可;輸出響應需要進行響應狀態碼、響應頭和響應內容體的輸出。因此我們從如上幾個點出發即可。

?

接收請求

1、example.conf配置文件?

Java代碼??
  • location?~?/lua_request/(\d+)/(\d+)?{??
  • ????#設置nginx變量??
  • ????set?$a?$1;???
  • ????set?$b?$host;??
  • ????default_type?"text/html";??
  • ????#nginx內容處理??
  • ????content_by_lua_file?/usr/example/lua/test_request.lua;??
  • ????#內容體處理完成后調用??
  • ????echo_after_body?"ngx.var.b?$b";??
  • }??
  • 2、test_request.lua?

    Java代碼??
  • --nginx變量??
  • local?var?=?ngx.var??
  • ngx.say("ngx.var.a?:?",?var.a,?"<br/>")??
  • ngx.say("ngx.var.b?:?",?var.b,?"<br/>")??
  • ngx.say("ngx.var[2]?:?",?var[2],?"<br/>")??
  • ngx.var.b?=?2;??
  • ??
  • ngx.say("<br/>")??
  • ??
  • --請求頭??
  • local?headers?=?ngx.req.get_headers()??
  • ngx.say("headers?begin",?"<br/>")??
  • ngx.say("Host?:?",?headers["Host"],?"<br/>")??
  • ngx.say("user-agent?:?",?headers["user-agent"],?"<br/>")??
  • ngx.say("user-agent?:?",?headers.user_agent,?"<br/>")??
  • for?k,v?in?pairs(headers)?do??
  • ????if?type(v)?==?"table"?then??
  • ????????ngx.say(k,?"?:?",?table.concat(v,?","),?"<br/>")??
  • ????else??
  • ????????ngx.say(k,?"?:?",?v,?"<br/>")??
  • ????end??
  • end??
  • ngx.say("headers?end",?"<br/>")??
  • ngx.say("<br/>")??
  • ??
  • --get請求uri參數??
  • ngx.say("uri?args?begin",?"<br/>")??
  • local?uri_args?=?ngx.req.get_uri_args()??
  • for?k,?v?in?pairs(uri_args)?do??
  • ????if?type(v)?==?"table"?then??
  • ????????ngx.say(k,?"?:?",?table.concat(v,?",?"),?"<br/>")??
  • ????else??
  • ????????ngx.say(k,?":?",?v,?"<br/>")??
  • ????end??
  • end??
  • ngx.say("uri?args?end",?"<br/>")??
  • ngx.say("<br/>")??
  • ??
  • --post請求參數??
  • ngx.req.read_body()??
  • ngx.say("post?args?begin",?"<br/>")??
  • local?post_args?=?ngx.req.get_post_args()??
  • for?k,?v?in?pairs(post_args)?do??
  • ????if?type(v)?==?"table"?then??
  • ????????ngx.say(k,?"?:?",?table.concat(v,?",?"),?"<br/>")??
  • ????else??
  • ????????ngx.say(k,?":?",?v,?"<br/>")??
  • ????end??
  • end??
  • ngx.say("post?args?end",?"<br/>")??
  • ngx.say("<br/>")??
  • ??
  • --請求的http協議版本??
  • ngx.say("ngx.req.http_version?:?",?ngx.req.http_version(),?"<br/>")??
  • --請求方法??
  • ngx.say("ngx.req.get_method?:?",?ngx.req.get_method(),?"<br/>")??
  • --原始的請求頭內容??
  • ngx.say("ngx.req.raw_header?:?",??ngx.req.raw_header(),?"<br/>")??
  • --請求的body內容體??
  • ngx.say("ngx.req.get_body_data()?:?",?ngx.req.get_body_data(),?"<br/>")??
  • ngx.say("<br/>")??
  • ngx.var?: nginx變量,如果要賦值如ngx.var.b = 2,此變量必須提前聲明;另外對于nginx location中使用正則捕獲的捕獲組可以使用ngx.var[捕獲組數字]獲取;

    ngx.req.get_headers:獲取請求頭,默認只獲取前100,如果想要獲取所以可以調用ngx.req.get_headers(0);獲取帶中劃線的請求頭時請使用如headers.user_agent這種方式;如果一個請求頭有多個值,則返回的是table;

    ngx.req.get_uri_args:獲取url請求參數,其用法和get_headers類似;

    ngx.req.get_post_args:獲取post請求內容體,其用法和get_headers類似,但是必須提前調用ngx.req.read_body()來讀取body體(也可以選擇在nginx配置文件使用lua_need_request_body on;開啟讀取body體,但是官方不推薦);

    ngx.req.raw_header:未解析的請求頭字符串;

    ngx.req.get_body_data:為解析的請求body體內容字符串。

    ?

    如上方法處理一般的請求基本夠用了。另外在讀取post內容體時根據實際情況設置client_body_buffer_size和client_max_body_size來保證內容在內存而不是在文件中。

    ?

    使用如下腳本測試

    Java代碼??
  • wget?--post-data?'a=1&b=2'?'http://127.0.0.1/lua_request/1/2?a=3&b=4'?-O?-???
  • ?

    輸出響應?

    1.1、example.conf配置文件

    Java代碼??
  • location?/lua_response_1?{??
  • ????default_type?"text/html";??
  • ????content_by_lua_file?/usr/example/lua/test_response_1.lua;??
  • }??
  • 1.2、test_response_1.lua?

    Java代碼??
  • --寫響應頭??
  • ngx.header.a?=?"1"??
  • --多個響應頭可以使用table??
  • ngx.header.b?=?{"2",?"3"}??
  • --輸出響應??
  • ngx.say("a",?"b",?"<br/>")??
  • ngx.print("c",?"d",?"<br/>")??
  • --200狀態碼退出??
  • return?ngx.exit(200)??
  • ngx.header:輸出響應頭;

    ngx.print:輸出響應內容體;

    ngx.say:通ngx.print,但是會最后輸出一個換行符;

    ngx.exit:指定狀態碼退出。

    ?

    2.1、example.conf配置文件

    Java代碼??
  • location?/lua_response_2?{??
  • ????default_type?"text/html";??
  • ????content_by_lua_file?/usr/example/lua/test_response_2.lua;??
  • }??
  • ?

    2.2、test_response_2.lua

    Java代碼??
  • ngx.redirect("http://jd.com",?302)??
  • ngx.redirect:重定向;?

    ?

    ngx.status=狀態碼,設置響應的狀態碼;ngx.resp.get_headers()獲取設置的響應狀態碼;ngx.send_headers()發送響應狀態碼,當調用ngx.say/ngx.print時自動發送響應狀態碼;可以通過ngx.headers_sent=true判斷是否發送了響應狀態碼。

    ?

    其他API

    1、example.conf配置文件

    Java代碼??
  • location?/lua_other?{??
  • ????default_type?"text/html";??
  • ????content_by_lua_file?/usr/example/lua/test_other.lua;??
  • }??
  • ?

    2、test_other.lua

    Java代碼??
  • --未經解碼的請求uri??
  • local?request_uri?=?ngx.var.request_uri;??
  • ngx.say("request_uri?:?",?request_uri,?"<br/>");??
  • --解碼??
  • ngx.say("decode?request_uri?:?",?ngx.unescape_uri(request_uri),?"<br/>");??
  • --MD5??
  • ngx.say("ngx.md5?:?",?ngx.md5("123"),?"<br/>")??
  • --http?time??
  • ngx.say("ngx.http_time?:?",?ngx.http_time(ngx.time()),?"<br/>")??
  • ?

    ngx.escape_uri/ngx.unescape_uri?: uri編碼解碼;

    ngx.encode_args/ngx.decode_args:參數編碼解碼;

    ngx.encode_base64/ngx.decode_base64:BASE64編碼解碼;

    ngx.re.match:nginx正則表達式匹配;

    ?

    更多Nginx Lua API請參考?http://wiki.nginx.org/HttpLuaModule#Nginx_API_for_Lua。

    ?

    Nginx全局內存

    使用過如Java的朋友可能知道如Ehcache等這種進程內本地緩存,Nginx是一個Master進程多個Worker進程的工作方式,因此我們可能需要在多個Worker進程中共享數據,那么此時就可以使用ngx.shared.DICT來實現全局內存共享。

    ?

    1、首先在nginx.conf的http部分分配內存大小

    Java代碼??
  • #共享全局變量,在所有worker間共享??
  • lua_shared_dict?shared_data?1m;??
  • ?

    2、example.conf配置文件

    Java代碼??
  • location?/lua_shared_dict?{??
  • ????default_type?"text/html";??
  • ????content_by_lua_file?/usr/example/lua/test_lua_shared_dict.lua;??
  • }??
  • 3、?test_lua_shared_dict.lua

    Java代碼??
  • --1、獲取全局共享內存變量??
  • local?shared_data?=?ngx.shared.shared_data??
  • ??
  • --2、獲取字典值??
  • local?i?=?shared_data:get("i")??
  • if?not?i?then??
  • ????i?=?1??
  • ????--3、惰性賦值??
  • ????shared_data:set("i",?i)??
  • ????ngx.say("lazy?set?i?",?i,?"<br/>")??
  • end??
  • --遞增??
  • i?=?shared_data:incr("i",?1)??
  • ngx.say("i=",?i,?"<br/>")??
  • 更多API請參考http://wiki.nginx.org/HttpLuaModule#ngx.shared.DICT。?

    ?

    ?

    到此基本的Nginx Lua API就學完了,對于請求處理和輸出響應如上介紹的API完全夠用了,更多API請參考官方文檔。

    ?

    Nginx Lua模塊指令

    Nginx共11個處理階段,而相應的處理階段是可以做插入式處理,即可插拔式架構;另外指令可以在http、server、server if、location、location if幾個范圍進行配置:

    指令

    所處處理階段

    使用范圍

    解釋

    init_by_lua

    init_by_lua_file

    loading-config

    http

    nginx Master進程加載配置時執行;

    通常用于初始化全局配置/預加載Lua模塊

    init_worker_by_lua

    init_worker_by_lua_file

    starting-worker

    http

    每個Nginx Worker進程啟動時調用的計時器,如果Master進程不允許則只會在init_by_lua之后調用;

    通常用于定時拉取配置/數據,或者后端服務的健康檢查

    set_by_lua

    set_by_lua_file

    rewrite

    server,server if,location,location if

    設置nginx變量,可以實現復雜的賦值邏輯;此處是阻塞的,Lua代碼要做到非常快;

    rewrite_by_lua

    rewrite_by_lua_file

    rewrite tail

    http,server,location,location if

    rrewrite階段處理,可以實現復雜的轉發/重定向邏輯;

    access_by_lua

    access_by_lua_file

    access tail

    http,server,location,location if

    請求訪問階段處理,用于訪問控制

    content_by_lua

    content_by_lua_file

    content

    location,location if

    內容處理器,接收請求處理并輸出響應

    header_filter_by_lua

    header_filter_by_lua_file

    output-header-filter

    http,server,location,location if

    設置header和cookie

    body_filter_by_lua

    body_filter_by_lua_file

    output-body-filter

    http,server,location,location if

    對響應數據進行過濾,比如截斷、替換。

    log_by_lua

    log_by_lua_file

    log

    http,server,location,location if

    log階段處理,比如記錄訪問量/統計平均響應時間

    ?

    更詳細的解釋請參考http://wiki.nginx.org/HttpLuaModule#Directives。如上指令很多并不常用,因此我們只拿其中的一部分做演示。

    ?

    init_by_lua

    每次Nginx重新加載配置時執行,可以用它來完成一些耗時模塊的加載,或者初始化一些全局配置;在Master進程創建Worker進程時,此指令中加載的全局變量會進行Copy-OnWrite,即會復制到所有全局變量到Worker進程。

    ?

    1、nginx.conf配置文件中的http部分添加如下代碼

    Java代碼??
  • #共享全局變量,在所有worker間共享??
  • lua_shared_dict?shared_data?1m;??
  • ??
  • init_by_lua_file?/usr/example/lua/init.lua;??
  • ??

    2、init.lua

    Java代碼??
  • --初始化耗時的模塊??
  • local?redis?=?require?'resty.redis'??
  • local?cjson?=?require?'cjson'??
  • ??
  • --全局變量,不推薦??
  • count?=?1??
  • ??
  • --共享全局內存??
  • local?shared_data?=?ngx.shared.shared_data??
  • shared_data:set("count",?1)??
  • ?

    3、test.lua

    Java代碼??
  • count?=?count?+?1??
  • ngx.say("global?variable?:?",?count)??
  • local?shared_data?=?ngx.shared.shared_data??
  • ngx.say(",?shared?memory?:?",?shared_data:get("count"))??
  • shared_data:incr("count",?1)??
  • ngx.say("hello?world")??
  • ???

    4、訪問如http://192.168.1.2/lua 會發現全局變量一直不變,而共享內存一直遞增

    global variable : 2 , shared memory : 8 hello world?

    ?

    另外注意一定在生產環境開啟lua_code_cache,否則每個請求都會創建Lua VM實例。

    ?

    init_worker_by_lua

    用于啟動一些定時任務,比如心跳檢查,定時拉取服務器配置等等;此處的任務是跟Worker進程數量有關系的,比如有2個Worker進程那么就會啟動兩個完全一樣的定時任務。

    ?

    1、nginx.conf配置文件中的http部分添加如下代碼

    Java代碼??
  • init_worker_by_lua_file?/usr/example/lua/init_worker.lua;??
  • ??

    2、init_worker.lua

    Java代碼??
  • local?count?=?0??
  • local?delayInSeconds?=?3??
  • local?heartbeatCheck?=?nil??
  • ??
  • heartbeatCheck?=?function(args)??
  • ???count?=?count?+?1??
  • ???ngx.log(ngx.ERR,?"do?check?",?count)??
  • ??
  • ???local?ok,?err?=?ngx.timer.at(delayInSeconds,?heartbeatCheck)??
  • ??
  • ???if?not?ok?then??
  • ??????ngx.log(ngx.ERR,?"failed?to?startup?heartbeart?worker...",?err)??
  • ???end??
  • end??
  • ??
  • heartbeatCheck()??
  • ngx.timer.at:延時調用相應的回調方法;ngx.timer.at(秒單位延時,回調函數,回調函數的參數列表);可以將延時設置為0即得到一個立即執行的任務,任務不會在當前請求中執行不會阻塞當前請求,而是在一個輕量級線程中執行。

    ?

    另外根據實際情況設置如下指令

    lua_max_pending_timers 1024; ?#最大等待任務數

    lua_max_running_timers 256; ? ?#最大同時運行任務數

    ?

    ?

    set_by_lua?

    設置nginx變量,我們用的set指令即使配合if指令也很難實現負責的賦值邏輯;

    ?

    1.1、example.conf配置文件

    Java代碼??
  • location?/lua_set_1?{??
  • ????default_type?"text/html";??
  • ????set_by_lua_file?$num?/usr/example/lua/test_set_1.lua;??
  • ????echo?$num;??
  • }??
  • set_by_lua_file:語法set_by_lua_file $var lua_file arg1 arg2...; 在lua代碼中可以實現所有復雜的邏輯,但是要執行速度很快,不要阻塞;

    ?

    1.2、test_set_1.lua

    Java代碼??
  • local?uri_args?=?ngx.req.get_uri_args()??
  • local?i?=?uri_args["i"]?or?0??
  • local?j?=?uri_args["j"]?or?0??
  • ??
  • return?i?+?j??
  • 得到請求參數進行相加然后返回。

    ?

    訪問如http://192.168.1.2/lua_set_1?i=1&j=10進行測試。 如果我們用純set指令是無法實現的。

    ?

    再舉個實際例子,我們實際工作時經常涉及到網站改版,有時候需要新老并存,或者切一部分流量到新版

    ?

    2.1、首先在example.conf中使用map指令來映射host到指定nginx變量,方便我們測試

    Java代碼??
  • ############?測試時使用的動態請求??
  • map?$host?$item_dynamic?{??
  • ????default?????????????????????"0";??
  • ????item2014.jd.com????????????"1";??
  • }??
  • 如綁定hosts

    192.168.1.2 item.jd.com;

    192.168.1.2 item2014.jd.com;

    ?

    此時我們想訪問item2014.jd.com時訪問新版,那么我們可以簡單的使用如

    Java代碼??
  • if?($item_dynamic?=?"1")?{??
  • ???proxy_pass?http://new;??
  • }??
  • proxy_pass?http://old;??
  • ?

    但是我們想把商品編號為為8位(比如品類為圖書的)沒有改版完成,需要按照相應規則跳轉到老版,但是其他的到新版;雖然使用if指令能實現,但是比較麻煩,基本需要這樣

    Java代碼??
  • set?jump?"0";??
  • if($item_dynamic?=?"1")?{??
  • ????set?$jump?"1";??
  • }??
  • if(uri?~?"^/6[0-9]{7}.html")?{??
  • ???set?$jump?"${jump}2";??
  • }??
  • #非強制訪問新版,且訪問指定范圍的商品??
  • if?(jump?==?"02")?{??
  • ???proxy_pass?http://old;??
  • }??
  • proxy_pass?http://new;??
  • 以上規則還是比較簡單的,如果涉及到更復雜的多重if/else或嵌套if/else實現起來就更痛苦了,可能需要到后端去做了;此時我們就可以借助lua了:

    Java代碼??
  • set_by_lua?$to_book?'??
  • ?????local?ngx_match?=?ngx.re.match??
  • ?????local?var?=?ngx.var??
  • ?????local?skuId?=?var.skuId??
  • ?????local?r?=?var.item_dynamic?~=?"1"?and?ngx.re.match(skuId,?"^[0-9]{8}$")??
  • ?????if?r?then?return?"1"?else?return?"0"?end;??
  • ';??
  • set_by_lua?$to_mvd?'??
  • ?????local?ngx_match?=?ngx.re.match??
  • ?????local?var?=?ngx.var??
  • ?????local?skuId?=?var.skuId??
  • ?????local?r?=?var.item_dynamic?~=?"1"?and?ngx.re.match(skuId,?"^[0-9]{9}$")??
  • ?????if?r?then?return?"1"?else?return?"0"?end;??
  • ';??
  • #自營圖書??
  • if?($to_book)?{??
  • ????proxy_pass?http://127.0.0.1/old_book/$skuId.html;??
  • }??
  • #自營音像??
  • if?($to_mvd)?{??
  • ????proxy_pass?http://127.0.0.1/old_mvd/$skuId.html;??
  • }??
  • #默認??
  • proxy_pass?http://127.0.0.1/proxy/$skuId.html;??
  • ??

    ?rewrite_by_lua?

    執行內部URL重寫或者外部重定向,典型的如偽靜態化的URL重寫。其默認執行在rewrite處理階段的最后。

    ?

    1.1、example.conf配置文件

    Java代碼??
  • location?/lua_rewrite_1?{??
  • ????default_type?"text/html";??
  • ????rewrite_by_lua_file?/usr/example/lua/test_rewrite_1.lua;??
  • ????echo?"no?rewrite";??
  • }??
  • ?

    1.2、test_rewrite_1.lua

    Java代碼??
  • if?ngx.req.get_uri_args()["jump"]?==?"1"?then??
  • ???return?ngx.redirect("http://www.jd.com?jump=1",?302)??
  • end??
  • 當我們請求http://192.168.1.2/lua_rewrite_1時發現沒有跳轉,而請求http://192.168.1.2/lua_rewrite_1?jump=1時發現跳轉到京東首頁了。 此處需要301/302跳轉根據自己需求定義。

    ?

    2.1、example.conf配置文件

    Java代碼??
  • location?/lua_rewrite_2?{??
  • ????default_type?"text/html";??
  • ????rewrite_by_lua_file?/usr/example/lua/test_rewrite_2.lua;??
  • ????echo?"rewrite2?uri?:?$uri,?a?:?$arg_a";??
  • }??
  • ?

    2.2、test_rewrite_2.lua

    Java代碼??
  • if?ngx.req.get_uri_args()["jump"]?==?"1"?then??
  • ???ngx.req.set_uri("/lua_rewrite_3",?false);??
  • ???ngx.req.set_uri("/lua_rewrite_4",?false);??
  • ???ngx.req.set_uri_args({a?=?1,?b?=?2});??
  • end???
  • ngx.req.set_uri(uri, false):可以內部重寫uri(可以帶參數),等價于 rewrite ^ /lua_rewrite_3;通過配合if/else可以實現?rewrite ^ /lua_rewrite_3 break;這種功能;此處兩者都是location內部url重寫,不會重新發起新的location匹配;

    ngx.req.set_uri_args:重寫請求參數,可以是字符串(a=1&b=2)也可以是table;

    ?

    訪問如http://192.168.1.2/lua_rewrite_2?jump=0時得到響應

    rewrite2 uri : /lua_rewrite_2, a :

    ?

    訪問如http://192.168.1.2/lua_rewrite_2?jump=1時得到響應

    rewrite2 uri : /lua_rewrite_4, a : 1

    ?

    3.1、example.conf配置文件

    Java代碼??
  • location?/lua_rewrite_3?{??
  • ????default_type?"text/html";??
  • ????rewrite_by_lua_file?/usr/example/lua/test_rewrite_3.lua;??
  • ????echo?"rewrite3?uri?:?$uri";??
  • }??
  • ?

    3.2、test_rewrite_3.lua

    Java代碼??
  • if?ngx.req.get_uri_args()["jump"]?==?"1"?then??
  • ???ngx.req.set_uri("/lua_rewrite_4",?true);??
  • ???ngx.log(ngx.ERR,?"=========")??
  • ???ngx.req.set_uri_args({a?=?1,?b?=?2});??
  • end??
  • ngx.req.set_uri(uri, true):可以內部重寫uri,即會發起新的匹配location請求,等價于 rewrite ^ /lua_rewrite_4 last;此處看error log是看不到我們記錄的log。

    ?

    所以請求如http://192.168.1.2/lua_rewrite_3?jump=1會到新的location中得到響應,此處沒有/lua_rewrite_4,所以匹配到/lua請求,得到類似如下的響應

    global variable : 2 , shared memory : 1 hello world

    ?

    rewrite ^ /lua_rewrite_3; ? ? ? ? ? ? ? ? 等價于 ?ngx.req.set_uri("/lua_rewrite_3", false);

    rewrite ^ /lua_rewrite_3 break; ? ? ? 等價于 ?ngx.req.set_uri("/lua_rewrite_3", false); 加 if/else判斷/break/return

    rewrite ^ /lua_rewrite_4 last; ? ? ? ? ? 等價于 ?ngx.req.set_uri("/lua_rewrite_4", true);

    ?

    注意,在使用rewrite_by_lua時,開啟rewrite_log on;后也看不到相應的rewrite log。

    ?

    access_by_lua?

    用于訪問控制,比如我們只允許內網ip訪問,可以使用如下形式

    Java代碼??
  • allow?????127.0.0.1;??
  • allow?????10.0.0.0/8;??
  • allow?????192.168.0.0/16;??
  • allow?????172.16.0.0/12;??
  • deny??????all;??
  • ?

    1.1、example.conf配置文件

    Java代碼??
  • location?/lua_access?{??
  • ????default_type?"text/html";??
  • ????access_by_lua_file?/usr/example/lua/test_access.lua;??
  • ????echo?"access";??
  • }??
  • ?

    ?1.2、test_access.lua

    Java代碼??
  • if?ngx.req.get_uri_args()["token"]?~=?"123"?then??
  • ???return?ngx.exit(403)??
  • end??
  • 即如果訪問如http://192.168.1.2/lua_access?token=234將得到403 Forbidden的響應。這樣我們可以根據如cookie/用戶token來決定是否有訪問權限。

    ?

    ?

    content_by_lua???

    此指令之前已經用過了,此處就不講解了。

    ?

    另外在使用PCRE進行正則匹配時需要注意正則的寫法,具體規則請參考http://wiki.nginx.org/HttpLuaModule中的Special PCRE Sequences部分。還有其他的注意事項也請閱讀官方文檔。


    來源:http://jinnianshilongnian.iteye.com/blog/2186448

    總結

    以上是生活随笔為你收集整理的第二章 OpenResty(Nginx+Lua)开发入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    97香蕉超级碰碰久久免费软件 | 亚洲精品一区二区三区新线路 | 亚洲精品小视频 | 2023亚洲精品国偷拍自产在线 | 免费电影一区二区三区 | 手机av电影在线观看 | 久久国产欧美日韩精品 | 国产亚洲精品bv在线观看 | 免费网站观看www在线观看 | 日韩久久精品一区二区 | 色美女在线 | 国产精品久久电影网 | 日本中文字幕系列 | 日日日天天天 | 成人a免费视频 | 亚洲精品一区二区在线观看 | 99久久婷婷国产综合精品 | av免费电影在线观看 | 国产精品久久久久久久毛片 | av在线一二三区 | 五月天激情视频在线观看 | 国产福利一区在线观看 | 国产一级久久 | 在线观看v片 | 久久爱导航 | 黄色大片视频网站 | 欧美成年黄网站色视频 | 久久激情视频 久久 | 91网站在线视频 | 日韩欧美一区二区在线播放 | 日日夜夜国产 | 欧美久久久久久 | 日韩久久久久 | 天天综合成人网 | 色偷偷888欧美精品久久久 | 2023天天干 | 久久久久久看片 | 久久婷婷综合激情 | 毛片在线网 | 最近免费中文字幕mv在线视频3 | 色婷婷综合久久久中文字幕 | 深夜国产福利 | 日韩视频一区二区三区在线播放免费观看 | 欧美aaa一级 | 亚洲国产日韩精品 | 欧美一级视频免费 | 性日韩欧美在线视频 | 久久精品99国产国产精 | 香蕉视频国产在线观看 | 国产精品video爽爽爽爽 | 午夜精品一区二区三区可下载 | 中文字幕在线视频网站 | www.久久免费视频 | 亚洲视频在线观看网站 | 91入口在线观看 | 欧美a级片免费看 | av解说在线 | 中文字幕视频三区 | 久久免费大片 | 亚洲人成精品久久久久 | 在线免费观看黄色大片 | 日韩一区正在播放 | 免费看三级网站 | 午夜av免费看 | 久久久亚洲电影 | 午夜成人免费影院 | 国产精品一区二区三区四 | 久久午夜电影 | 欧美日韩高清一区 | 国产精品久久久久久久免费大片 | 国产精品 视频 | 日批视频| 韩国av免费观看 | 91视频在线免费看 | 青青五月天 | 蜜桃麻豆www久久囤产精品 | 午夜精品久久久久久久久久久久 | 亚洲经典视频在线观看 | 97超碰在线久草超碰在线观看 | 国产成人精品综合久久久 | 国产福利精品在线观看 | 五月天激情婷婷 | 探花视频在线观看 | 亚洲一级理论片 | 亚洲精品国偷自产在线91正片 | 久久99深爱久久99精品 | 日日天天 | 亚洲欧洲精品一区 | 日韩丝袜 | 欧洲精品亚洲精品 | 视频一区亚洲 | 一区二区三区www | 久久国语| 日韩成人在线免费观看 | 午夜视频欧美 | 亚洲精品久久久久中文字幕m男 | 在线观看久久久久久 | 久草视频在线资源站 | 夜夜躁狠狠躁日日躁 | 99r精品视频在线观看 | 五月婷av | 久久综合爱 | 天堂av在线免费观看 | 深爱婷婷 | 在线视频精品 | 色婷婷狠狠操 | 欧美a级在线 | 成人午夜剧场在线观看 | 国产午夜精品一区二区三区在线观看 | 亚洲少妇自拍 | 亚洲国产日韩欧美 | 国产青春久久久国产毛片 | 狠狠干网| 日本二区三区在线 | 最新超碰| 六月丁香在线观看 | 超碰97在线资源站 | 欧美日韩xxxxx | 国产最新福利 | 91精品电影 | 麻豆91精品视频 | 人人爱在线视频 | 91 在线视频 | 91亚瑟视频 | 亚洲成熟女人毛片在线 | 国产又粗又长又硬免费视频 | 婷婷六月网 | 91久久丝袜国产露脸动漫 | 91自拍视频在线观看 | 亚洲精品视频免费在线 | 97视频免费观看 | 免费观看国产成人 | 午夜在线免费视频 | 久久精品中文字幕一区二区三区 | 四虎精品成人免费网站 | 国产剧情在线一区 | 天天操天天透 | 97国产大学生情侣白嫩酒店 | 亚洲精品免费观看 | 99热在线观看 | 色播亚洲婷婷 | av片一区 | 欧美精品一区二区在线播放 | 久久在线视频在线 | 亚洲国产午夜精品 | 欧美日韩精品影院 | 美女免费网站 | 亚洲精品免费在线观看 | 国产精品久久麻豆 | 九九久久精品 | 黄污网| 亚洲国产成人精品久久 | 亚洲人成综合 | 中文字幕在线专区 | 粉嫩av一区二区三区免费 | 亚洲国产中文字幕在线观看 | 人人干人人爽 | 亚洲精品视频在线观看免费视频 | 国产黄色av网站 | 亚洲一区二区三区在线看 | 91亚色视频 | 中文字幕色婷婷在线视频 | 欧美亚洲精品一区 | 国产精品成人免费一区久久羞羞 | 国产a视频免费观看 | 又黄又爽又刺激视频 | www.五月婷| 国产日本亚洲高清 | 亚洲人成人天堂h久久 | 九九热av | 黄在线免费看 | 久久乐九色婷婷综合色狠狠182 | 国产在线视频导航 | 久久爱导航 | 久久国产午夜精品理论片最新版本 | 精品久久网 | 毛片随便看 | 色婷婷色 | 国产精品久久99精品毛片三a | 亚洲免费av在线播放 | 天天插一插| 日韩av成人在线观看 | 麻豆视频在线观看免费 | 欧美在线观看视频一区二区三区 | 99久久精品久久久久久清纯 | 亚洲精品免费在线观看视频 | 国产91aaa| 亚洲在线国产 | 超碰av在线 | 国产精品国产三级国产 | 91人人爽人人爽人人精88v | 91精品国产91久久久久福利 | 婷婷色影院 | 99久久精品一区二区成人 | 在线观看免费日韩 | 日本不卡一区二区三区在线观看 | 欧美一区二区三区特黄 | 99爱视频在线观看 | 在线观看一级视频 | 日本二区三区在线 | 亚洲,播放 | 午夜精品电影一区二区在线 | 毛片网在线 | 免费午夜在线视频 | 国产亚洲无 | 三级视频日韩 | 久久97视频| 中文字幕在线免费97 | 91久久久久久久一区二区 | 国产精品久久久久久久久久久久久 | 色wwwww| 欧美午夜精品久久久久久孕妇 | 日日夜夜噜噜噜 | 久久99国产精品自在自在app | 精品亚洲va在线va天堂资源站 | 三级黄色欧美 | 久久电影网站中文字幕 | 一级α片| 久久久久国产视频 | 国产一区二区三区 在线 | 91精品国产91久久久久 | 夜夜夜草 | 国产群p| 国产一及片| 精品不卡视频 | 日韩三区在线 | 天天综合导航 | 特级xxxxx欧美 | 97精品国产91久久久久久 | 在线观看电影av | 开心综合网 | 在线黄色免费av | 在线观看av大片 | 99精品久久久 | 久久国产精品免费 | 日本99干网 | 在线观看视频福利 | 国内精品视频久久 | 国产91精品在线观看 | www.神马久久| 免费91麻豆精品国产自产在线观看 | 最新国产一区二区三区 | 三上悠亚一区二区在线观看 | 99热在线这里只有精品 | 欧美资源在线观看 | 国产成人三级三级三级97 | 亚洲婷婷在线视频 | 丁香六月在线 | a视频在线观看免费 | 国产精彩视频一区二区 | 免费观看成年人视频 | 亚洲精品女人久久久 | 在线观看久久久久久 | 奇米影视8888在线观看大全免费 | av不卡中文 | 久久黄色影院 | 视频在线国产 | 亚洲精品国产精品国自产在线 | 日韩电影在线一区 | 色婷婷综合激情 | 91理论片午午伦夜理片久久 | japanesexxxhd奶水 91在线精品一区二区 | 国产精品欧美一区二区 | 欧美精品v国产精品 | 中文字幕一区二区三区在线视频 | 久久av一区二区三区亚洲 | 最近免费中文字幕mv在线视频3 | 精品国产乱码久久久久久浪潮 | av电影免费观看 | 91人人爱 | 国产91丝袜在线播放动漫 | 天天爱天天操 | 精品国内 | 久久夜色精品国产欧美乱 | 国产一区二区精品 | 日韩色综合 | 天天操夜夜操国产精品 | 亚洲在线视频观看 | av电影在线观看完整版一区二区 | 免费视频久久久 | 国产精品视频99 | 337p欧美 | 日日草天天干 | 免费在线观看一区 | 欧美激情综合色 | 日韩欧美在线视频一区二区 | 91在线免费观看国产 | 亚洲精品国产精品乱码在线观看 | 一区三区视频在线观看 | 精品久久久久久亚洲 | 狠狠狠狠狠狠狠干 | 精品久久久久久久久久久久久久久久 | 探花视频免费在线观看 | 在线观看免费日韩 | 亚洲视频免费 | 日韩中文字幕免费看 | 96久久精品 | 亚洲自拍自偷 | a爱爱视频 | 亚洲天堂自拍视频 | 五月天最新网址 | 免费a级黄色毛片 | 国产黄在线 | 久久国产视屏 | 密桃av在线| 国产精品第54页 | 五月开心综合 | 五月丁婷婷 | 欧美一级片免费在线观看 | 黄色录像av | 亚洲 欧美变态 另类 综合 | 激情小说 五月 | 国产精品日韩精品 | 黄色亚洲精品 | 国产麻豆电影在线观看 | 999视频网| 热re99久久精品国产99热 | 超碰电影在线观看 | 美女黄视频免费看 | 五月天色婷婷丁香 | 日韩在线网| 黄色特级一级片 | 337p日本大胆噜噜噜噜 | 日夜夜精品视频 | 国产99久久九九精品 | 91av社区 | 激情图片久久 | 亚洲免费视频在线观看 | 又紧又大又爽精品一区二区 | 国产一级二级在线观看 | 免费日韩一区二区三区 | 狠狠插狠狠操 | 毛片网在线 | 色免费在线 | 成人在线播放网站 | 亚洲精品玖玖玖av在线看 | 夜夜躁日日躁 | 亚洲视频免费在线 | 人人添人人 | 国产精品久久久久久五月尺 | 成人毛片在线观看视频 | 欧美精品久久久久a | 黄色一集片 | 午夜电影中文字幕 | 在线播放国产一区二区三区 | 欧美不卡视频在线 | 国产精品久久久久久久久岛 | 九九综合在线 | 国产成人精品福利 | 香蕉视频国产在线 | 欧美热久久 | 久久99国产综合精品免费 | 色姑娘综合网 | 久久久精品综合 | 99在线视频精品 | 日韩欧美精品在线 | 国产精品久久在线 | 成人动漫一区二区三区 | 在线观看香蕉视频 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 黄色高清视频在线观看 | 国产艹b视频 | www久久九| 久久国产日韩 | 国产丝袜高跟 | 国产亚洲va综合人人澡精品 | 免费a现在观看 | 91精品国产91久久久久久三级 | av观看久久久 | 国产码电影 | 成年人国产视频 | 国产一区二区在线播放视频 | 在线视频 区 | 99热免费在线 | 亚洲最新视频在线播放 | av中文字幕在线播放 | 五月亚洲综合 | 丁香久久五月 | 婷婷午夜| 日韩在线视频网址 | 亚洲一区不卡视频 | 亚洲人成人天堂h久久 | 精品国产一二三 | 九色视频网 | 一区在线电影 | 日韩女同一区二区三区在线观看 | 福利视频导航网址 | 精品国产片 | 国产黄在线免费观看 | 91av在线免费观看 | 手机在线小视频 | 激情久久小说 | 麻豆国产精品一区二区三区 | 天天操福利视频 | 在线看片a | 97视频在线看 | 手机成人av | av黄色免费网站 | 五月婷婷久草 | 色a资源在线 | 2019天天干天天色 | 色综合婷婷 | 欧美日韩精品在线观看 | 综合婷婷丁香 | 天天色天天干天天 | 国产午夜精品一区二区三区欧美 | 国产精品中文字幕av | av超碰在线 | 国产亚洲在线观看 | 麻豆精品国产传媒 | 亚洲综合小说电影qvod | 国产黄色片免费看 | 久久 一区 | 91亚·色| 中文字幕在线久一本久 | 亚洲激情小视频 | 色婷婷激情网 | 久草影视在线 | 中文字幕在线视频免费播放 | 狠狠操电影网 | 免费在线黄色av | 99精品欧美一区二区蜜桃免费 | 91毛片在线 | 久久黄色片子 | 天天操天天操天天操天天 | 久久精品一区二区三区国产主播 | 亚洲欧美国产视频 | 日本99干网 | 97视频免费播放 | 激情婷婷 | 精品久久久久久一区二区里番 | 免费在线观看成人小视频 | 国产精品青草综合久久久久99 | 久久综合狠狠综合 | 一区二区三区在线不卡 | 99精品福利视频 | 国产色视频网站2 | 国产精品国产三级国产aⅴ入口 | 精品国产一区二区久久 | av线上免费看 | 色橹橹欧美在线观看视频高清 | 精品国产一区二区三区日日嗨 | 亚洲国产午夜 | 国产另类xxxxhd高清 | 免费涩涩网站 | 伊人久久精品久久亚洲一区 | 国产精品不卡在线播放 | 成人sm另类专区 | 欧美一级久久 | 在线精品播放 | 99理论片 | 在线免费看黄色 | 日韩精品一区二区免费 | 日韩欧美国产精品 | 国产精品自产拍在线观看 | 亚洲精品国产精品乱码在线观看 | 婷婷成人亚洲综合国产xv88 | 亚州中文av | 国产色一区 | 久草视频视频在线播放 | 亚洲视频每日更新 | 久久国产经典视频 | 91丨九色丨国产丨porny精品 | 国产呻吟在线 | 久草在线费播放视频 | 精品播放| 欧美性生活大片 | 公开超碰在线 | 成人理论电影 | 久久99国产一区二区三区 | 九九免费精品视频在线观看 | 一级免费看 | 欧美人交a欧美精品 | 久久免费视频3 | 久久久国产一区二区三区四区小说 | 国产视频九色蝌蚪 | 色999在线 | 美女免费网站 | 日韩高清二区 | 国产99免费视频 | 99热精品久久| 免费一级日韩欧美性大片 | 亚洲少妇xxxx | 中文字幕婷婷 | 欧美孕交vivoestv另类 | 婷婷婷国产在线视频 | 日日干夜夜操视频 | 91精品小视频 | 婷婷综合国产 | 91大神在线观看视频 | 99精品视频免费在线观看 | 午夜av日韩| 中文字幕日韩有码 | av成人免费在线观看 | 久久久久综合网 | 国产91亚洲精品 | 91av在线不卡 | 狠狠狠狠狠狠狠干 | 久久国产精品免费观看 | 久久婷婷一区二区三区 | 婷婷六月综合亚洲 | 狠狠伊人 | 黄色一级网| 三级av在线播放 | 国产精品毛片一区 | 偷拍区另类综合在线 | 天天综合视频在线观看 | 欧美日韩3p | 丰满少妇在线观看 | 99国产精品视频免费观看一公开 | 18av在线视频 | 久久色在线播放 | 久草香蕉在线 | 黄色小说视频在线 | 黄色免费观看 | 国产成人久久精品77777 | 日韩三级久久 | 久久成人精品电影 | 激情五月色播五月 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 中文字幕国产一区 | 手机看片国产 | 不卡av在线免费观看 | 一区二区三区四区在线免费观看 | av线上看 | 在线激情小视频 | 天天做天天射 | 一本一道久久a久久精品蜜桃 | 国产精品美女久久久免费 | 中文字幕日韩精品有码视频 | 欧美日产一区 | 国产亚洲精品v | 欧美一二区视频 | 五月婷婷久久丁香 | 成人黄色片免费 | 国产一区二区不卡视频 | 国产小视频免费观看 | 午夜av片 | 日韩超碰在线 | 综合网色 | 精品久久九九 | 国产一区二区三区免费视频 | 亚洲经典中文字幕 | 国产精品综合av一区二区国产馆 | 一区二区三区国产精品 | 成人免费电影 | 久久激情视频 久久 | 久久99热国产 | 亚洲综合视频在线 | 黄色a三级 | 精品美女在线视频 | 五月婷网 | 一区二区三区不卡在线 | 国产精品11 | 在线观看国产www | 久久久久久欧美二区电影网 | 特级西西444www高清大视频 | av在线播放一区二区三区 | 91免费日韩 | 天天天射 | 中文字幕国产一区二区 | 欧美一区二区三区不卡 | 久久久精品 一区二区三区 国产99视频在线观看 | 国产精品免费大片视频 | 在线播放精品一区二区三区 | 国产成人精品久久久久 | 日韩欧美视频一区二区 | av五月婷婷 | 国产精品久久久久一区二区 | 国产精品欧美 | 日韩小视频网站 | 免费情趣视频 | 麻豆精品视频在线 | 在线午夜av | 人人澡人人添人人爽一区二区 | 日韩一区精品 | 日本在线观看视频一区 | 久久伦理影院 | 精品国产一区二区三区四区在线观看 | 99爱在线观看 | 91你懂的| www欧美色 | 国产精品99久久99久久久二8 | 免费观看av | 中文字幕一区二区在线观看 | 久久艹中文字幕 | 九七视频在线 | 国产1区在线 | 亚洲影院天堂 | 91久久丝袜国产露脸动漫 | 中文字幕在线观看视频免费 | 亚洲精品1区2区3区 超碰成人网 | 久久久久电影 | 亚洲永久av | 亚洲一区二区三区四区精品 | 9色在线视频 | 国产97在线播放 | 久久久免费精品国产一区二区 | 国产欧美精品一区二区三区四区 | www.99热精品 | 欧美久久久久久久久久久久 | 69视频在线| avwww在线观看 | 一区二区三区四区五区在线 | 最近日本字幕mv免费观看在线 | 国产精品久久久免费看 | 国产精品99久久久久久小说 | 欧美一级片免费观看 | 岛国av在线 | 4438全国亚洲精品在线观看视频 | 国产精品久久一区二区三区不卡 | 国产91免费看 | 天天躁日日躁狠狠躁 | 最近中文字幕久久 | 伊人色**天天综合婷婷 | 成人黄色电影视频 | 亚洲成人网av | 亚洲电影第一页av | 91精品国产92久久久久 | 9999精品免费视频 | 狠狠久久| 亚洲在线激情 | 国产精品中文字幕av | 久久久综合香蕉尹人综合网 | 久草在线资源网 | 久久久黄色免费网站 | 91视频在线观看大全 | 人人干天天干 | 在线99 | 欧美精品资源 | 日韩在线视频网址 | 亚洲综合色视频在线观看 | 久久久久久久久久久久久久电影 | 天天操夜| 在线观看国产v片 | 四虎在线观看精品视频 | 五月天伊人网 | 久久精品99精品国产香蕉 | 97视频免费观看2区 亚洲视屏 | 国产成人精品一区二区三区免费 | 香蕉一区 | 国产97在线看 | 97在线观看| 天天舔天天射天天操 | 久久精品国产免费看久久精品 | 久久久片 | 欧美色一色 | aaa日本高清在线播放免费观看 | 亚洲 欧美 综合 在线 精品 | 亚洲一区二区三区毛片 | 69视频在线播放 | 免费看黄色小说的网站 | avove黑丝| 91av网址 | 成人资源站 | 久久伦理影院 | 日韩免费一区二区在线观看 | 天天插天天色 | 玖玖精品视频 | 亚洲精品av中文字幕在线在线 | 一区二区精品在线观看 | 日韩欧美69 | 国产福利精品在线观看 | 久久久久亚洲精品成人网小说 | 在线观看视频一区二区三区 | 国产高清视频在线观看 | 7777xxxx| 中文国产在线观看 | 天天综合网 天天综合色 | 91精品对白一区国产伦 | 99超碰在线观看 | 中文字幕视频观看 | 亚洲成人影音 | 婷婷丁香视频 | 亚洲精品午夜久久久 | 国产成人精品久久久久蜜臀 | 亚洲精品电影在线 | 成人午夜影视 | 国产 日韩 在线 亚洲 字幕 中文 | 97人人看 | 国产精品亚洲片夜色在线 | 黄色片亚洲 | 久久国产精品小视频 | 成人在线免费看 | 成人免费亚洲 | 综合五月婷婷 | 久久久电影 | 黄色看片| 婷婷色在线播放 | 毛片永久新网址首页 | 97视频在线免费播放 | 国产成人在线一区 | 国产精品久久久久久婷婷天堂 | 美女国内精品自产拍在线播放 | 欧美精品中文在线免费观看 | 国产大陆亚洲精品国产 | 综合激情婷婷 | 在线观看免费版高清版 | 在线观看视频你懂得 | 黄色avwww | 精品在线播放 | 国产欧美综合视频 | 日韩免费三区 | 国产午夜精品一区二区三区嫩草 | 在线视频久 | 激情五月亚洲 | 日韩欧美在线高清 | 在线天堂v | 久久免费在线观看视频 | 精品成人久久 | 色婷婷成人网 | 亚洲最大成人免费网站 | 亚洲国产精品va在线看黑人 | 国产一级一级国产 | 亚洲午夜精品一区二区三区电影院 | 久久玖 | 美女久久视频 | 日日碰夜夜爽 | 成人小视频在线观看免费 | 久久99久久99免费视频 | 日韩激情视频在线观看 | 欧美一区二区三区激情视频 | 亚洲综合视频网 | 三级黄免费看 | av片一区 | 国产一级二级视频 | 亚洲精选在线 | 96视频免费在线观看 | 成人黄色毛片 | 久久精品香蕉视频 | 亚洲精品影视在线观看 | 色欲综合视频天天天 | 久久黄色小说 | 日韩videos | 婷婷色av| 亚洲在线视频播放 | 男女视频91| 伊人天堂av | 九九视频免费观看视频精品 | 精品国产自 | www.com在线观看 | 国产成人av电影在线观看 | 久久久久高清 | 午夜精品一区二区三区免费 | 精品国产1区2区3区 国产欧美精品在线观看 | 中文字幕一区二区三区久久蜜桃 | 亚洲专区在线 | av成人在线网站 | 91精品秘密在线观看 | 亚洲最新在线视频 | 精品久久久久久久久中文字幕 | 国产成人在线免费观看 | 69精品久久久 | 色婷婷亚洲婷婷 | 成人av一区二区兰花在线播放 | 日韩一级理论片 | 五月婷婷操 | 亚洲精品日韩av | 欧美日本三级 | 亚洲精品一区中文字幕乱码 | 婷香五月 | 欧美人人爱 | 狠狠狠狠狠狠狠 | 亚洲3级| 国产一级片视频 | 毛片网站免费在线观看 | 超碰在线人人97 | 欧美三级免费 | 日本3级在线观看 | 日韩av在线免费看 | 在线观看精品国产 | 黄色毛片在线 | 国产日产精品一区二区三区四区的观看方式 | 探花视频免费在线观看 | 中文字幕第 | 天天天天天天操 | 国产一级二级三级在线观看 | 日韩二区三区在线观看 | 午夜色性片 | 欧美日韩国产网站 | www黄色com | 麻豆传媒一区二区 | 国产香蕉在线 | 在线免费视频 你懂得 | 久久精品欧美一 | 国产真实精品久久二三区 | 五月婷婷综合在线观看 | 天天翘av | 欧美大片mv免费 | 中文字幕国产在线 | 国产黑丝一区二区三区 | 99精品黄色 | 伊人久久婷婷 | 婷婷伊人五月天 | 国产探花视频在线播放 | 免费亚洲精品视频 | 丁香六月婷婷激情 | 亚洲 欧美 日韩 综合 | 国产日产精品一区二区三区四区 | 日韩和的一区二在线 | 日本精品久久久久久 | 亚洲国产精品人久久电影 | 欧美日韩免费观看一区二区三区 | 久久久久久久久久久久国产精品 | 色天天综合久久久久综合片 | 深爱五月激情五月 | 91视频免费看片 | 久久久免费高清视频 | www.久久色| 亚洲蜜桃av | 美女免费电影 | 久草在线高清视频 | 日韩毛片在线免费观看 | 婷婷综合激情 | 国内精品久久久久久久久久清纯 | 一区精品在线 | 日本中文字幕网址 | 成人黄在线观看 | 日韩久久精品一区二区 | 日本精品久久久一区二区三区 | 久草免费在线观看视频 | 黄色国产区 | 欧美成人xxx | 亚洲精品在线视频网站 | 国产精品s色 | av在线一二三区 | 久久久精品网站 | 97福利在线观看 | 国产999精品 | 成年人视频免费在线 | 久久精品一区二区 | 日韩com| 久热超碰 | 国产一区在线免费观看视频 | 欧美精品久久久久 | 国产视频久久久久 | 国产美女久久久 | 91爱在线 | 精品国产自在精品国产精野外直播 | 91网址在线 | 久久精品草 | 免费福利片 | 日韩网站在线观看 | 三级动图 | aaa免费毛片 | 视频一区二区在线 | 中文字幕 国产视频 | 欧美日性视频 | 日韩三级视频在线观看 | 久久涩视频 | 免费看片日韩 | 欧美日韩裸体免费视频 | 欧美日韩精品在线一区二区 | 成人午夜电影网站 | 国产精品一区二区在线免费观看 | 婷婷开心久久网 | 四虎成人免费影院 | 国产在线国偷精品产拍免费yy | 亚洲精品久久久久www | 在线国产精品一区 | 亚洲污视频 | 久草在线综合 | 一级欧美一级日韩 | 手机在线日韩视频 | 色综合久久五月天 | 午夜精品av在线 | 久久国产手机看片 | 午夜999| 337p日本欧洲亚洲大胆裸体艺术 | 91成年人网站 | 色a资源在线 | 超碰av在线免费观看 | 亚洲精品免费在线播放 | 国产一区二区成人 | 激情五月在线观看 | 97小视频| 欧美久久综合 | 久久免费电影网 | 亚洲香蕉在线观看 | 开心激情五月网 | 91精品久久久久久粉嫩 | 超碰人在线 | 99久高清在线观看视频99精品热在线观看视频 | 国产资源中文字幕 | 久久99亚洲网美利坚合众国 | 波多野结衣最新 | www视频在线免费观看 | 国内精品久久久久久久久久久 | 天天射网 | 中文亚洲欧美日韩 | 亚洲国产97在线精品一区 | 黄色一级免费网站 | 日韩视频1 | 国产亚洲va综合人人澡精品 | 日韩高清激情 | 国产麻豆视频免费观看 | 在线视频一区二区 | 天天综合日日夜夜 | 91亚洲精品在线 | 天天曰天天爽 | 天天干夜夜 | 九色91在线视频 | 91欧美视频网站 | 成人h电影 | 日韩激情片在线观看 | 亚洲午夜小视频 | 日韩精品中文字幕av | 国产一区在线不卡 | 精品久久久99| 国产精品欧美久久久久三级 | 91精品人成在线观看 | 日韩欧美视频在线免费观看 | 911在线| 亚洲精品在线视频播放 | 亚洲精品黄色片 | 黄色三级久久 | 欧美99精品 | 久久av一区二区三区亚洲 | 天天综合网天天 | 亚洲综合欧美日韩狠狠色 | 国偷自产中文字幕亚洲手机在线 | 国产成人一区二区啪在线观看 | 视频一区亚洲 | 日本久久久久久 | 啪啪动态视频 | 久久综合给合久久狠狠色 | 久久久久久久久久久久av | 99精品国产aⅴ | 日韩欧美高清一区二区三区 | 综合网色 | 久草视频资源 | 日韩电影中文 | 黄污网站在线观看 | 国产高清视频在线观看 | 偷拍福利视频一区二区三区 | 中文字幕第 | 久久国产精品精品国产色婷婷 | 美女视频a美女大全免费下载蜜臀 | 中文字幕永久在线 | 日日夜夜草 | 成人精品一区二区三区中文字幕 | 啪啪免费视频网站 | 91热| 激情婷婷六月 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 999精品视频 | 狠狠操影视| 精品久久久影院 | 久久亚洲影视 | 91传媒91久久久 | 一区二区三区日韩在线 | 青春草免费在线视频 | 精品影院一区二区久久久 | 啪啪凸凸 | 中文字幕2021 | av一级在线 | 在线观看中文字幕网站 | 91在线中字 | 亚洲综合视频在线 | 9i看片成人免费看片 | 日精品在线观看 | 成人av网站在线播放 | 久久免费视频一区 | 亚洲精品乱码久久久久久写真 | 人人狠狠综合久久亚洲婷 | 91av播放| a视频在线 | 爱情影院aqdy鲁丝片二区 | 一本一本久久a久久精品综合小说 | 日本护士三级少妇三级999 | 国产精品毛片一区二区 | 在线免费中文字幕 | 狠狠久久综合 | 国产在线日本 | 日本精品视频免费观看 | 激情文学综合丁香 | 成人在线播放免费观看 | 国产精品免费不卡 | 亚洲精品黄| 欧美在线一 | 国产精品精品久久久 | 91完整版观看 | 成人黄色片免费 | 91九色成人| 91亚色视频| 久草视频在线观 | 美女视频黄色免费 | 成人一区电影 | 丁香资源影视免费观看 | 西西44人体做爰大胆视频 | 久久精品国产精品 | 在线视频观看成人 | 在线观看91精品国产网站 | 婷婷激情在线 | 久久视频免费看 | 五月婷婷丁香综合 | 国产黄色精品网站 | 国产精品久久久久久久久久99 |