久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

Nginx

用Nginx+Lua(OpenResty)开发高性能Web应用

發布時間:2025/3/21 Nginx 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Nginx+Lua(OpenResty)开发高性能Web应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在互聯網公司,Nginx可以說是標配組件,但是主要場景還是負載均衡、反向代理、代理緩存、限流等場景;而把Nginx作為一個Web容器使用的還不是那么廣泛。Nginx的高性能是大家公認的,而Nginx開發主要是以C/C++模塊的形式進行,整體學習和開發成本偏高;如果有一種簡單的語言來實現Web應用的開發,那么Nginx絕對是把好的瑞士軍刀;目前Nginx團隊也開始意識到這個問題,開發了nginxScript:可以在Nginx中使用JavaScript進行動態配置一些變量和動態腳本執行;而目前市面上用的非常成熟的擴展是由章亦春將Lua和Nginx粘合的ngx_lua模塊,并且將Nginx核心、LuaJIT、ngx_lua模塊、許多有用的Lua庫和常用的第三方Nginx模塊組合在一起成為OpenResty,這樣開發人員就可以安裝OpenResty,使用Lua編寫腳本,然后部署到Nginx Web容器中運行。從而非常輕松就能開發出高性能的Web服務。

?

接下來我們就認識下Nginx、Lua、ngx_lua模塊和ngx_lua到底能開發哪些類型的web應用。

?

?

一、ngx_lua簡介

1、Nginx優點

Nginx設計為一個主進程多個工作進程的工作模式,每個進程是單線程來處理多個連接,而且每個工作進程采用了非阻塞I/O來處理多個連接,從而減少了線程上下文切換,從而實現了公認的高性能、高并發;因此在生成環境中會通過把CPU綁定給Nginx工作進程從而提升其性能;另外因為單線程工作模式的特點,內存占用就非常少了。

Nginx更改配置重啟速度非常快,可以毫秒級,而且支持不停止Nginx進行升級Nginx版本、動態重載Nginx配置。

Nginx模塊也是非常多,功能也很強勁,不僅可以作為http負載均衡,Nginx發布1.9.0版本還支持TCP負載均衡,還可以很容易的實現內容緩存、web服務器、反向代理、訪問控制等功能。

?

2、Lua的優點

Lua是一種輕量級、可嵌入式的腳本語言,這樣可以非常容易的嵌入到其他語言中使用。另外Lua提供了協程并發,即以同步調用的方式進行異步執行,從而實現并發,比起回調機制的并發來說代碼更容易編寫和理解,排查問題也會容易。Lua還提供了閉包機制,函數可以作為First Class Value 進行參數傳遞,另外其實現了標記清除垃圾收集。

因為Lua的小巧輕量級,可以在Nginx中嵌入Lua VM,請求的時候創建一個VM,請求結束的時候回收VM。

?

3、什么是ngx_lua

ngx_lua是Nginx的一個模塊,將Lua嵌入到Nginx中,從而可以使用Lua來編寫腳本,這樣就可以使用Lua編寫應用腳本,部署到Nginx中運行,即Nginx變成了一個Web容器;這樣開發人員就可以使用Lua語言開發高性能Web應用了。

ngx_lua提供了與Nginx交互的很多的API,對于開發人員來說只需要學習這些API就可以進行功能開發,而對于開發web應用來說,如果接觸過Servlet的話,其開發和Servlet類似,無外乎就是知道接收請求、參數解析、功能處理、返回響應這幾步的API是什么樣子的。

?

4、開發環境

我們可以使用OpenResty來搭建開發環境,OpenResty將Nginx核心、LuaJIT、許多有用的Lua庫和Nginx第三方模塊打包在一起;這樣開發人員只需要安裝OpenResty,不需要了解Nginx核心和寫復雜的C/C++模塊就可以,只需要使用Lua語言進行Web應用開發了。

如何安裝可以參考《跟我學Nginx+Lua開發》。

?

5、OpenResty生態

OpenResty提供了一些常用的ngx_lua開發模塊:如

? lua-resty-memcached

? lua-resty-mysql

? lua-resty-redis

? lua-resty-dns

? lua-resty-limit-traffic

? lua-resty-template

這些模塊涉及到如mysql數據庫、redis、限流、模塊渲染等常用功能組件;另外也有很多第三方的ngx_lua組件供我們使用,對于大部分應用場景來說現在生態環境中的組件已經足夠多了;如果不滿足需求也可以自己去寫來完成自己的需求。

?

6、場景

理論上可以使用ngx_lua開發各種復雜的web應用,不過Lua是一種腳本/動態語言,不適合業務邏輯比較重的場景,適合小巧的應用場景,代碼行數保持在幾十行到幾千行。目前見到的一些應用場景:

web應用:會進行一些業務邏輯處理,甚至進行耗CPU的模板渲染,一般流程:mysql/redis/http獲取數據、業務處理、產生JSON/XML/模板渲染內容,比如京東的列表頁/商品詳情頁;

接入網關:實現如數據校驗前置、緩存前置、數據過濾、API請求聚合、AB測試、灰度發布、降級、監控等功能,比如京東的交易大Nginx節點、無線部門正在開發的無線網關、單品頁統一服務、實時價格、動態服務;

Web防火墻:可以進行IP/URL/UserAgent/Referer黑名單、限流等功能;

緩存服務器:可以對響應內容進行緩存,減少到后端的請求,從而提升性能;

其他:如靜態資源服務器、消息推送服務、縮略圖裁剪等。

?

二、基于Nginx+Lua的常用架構模式

1、負載均衡

?

如上圖,我們首先通過LVS+HAProxy將流量轉發給核心Nginx 1和核心Nginx 2,即實現了流量的負載均衡,此處可以使用如輪訓、一致性哈希等調度算法來實現負載的轉發;然后核心Nginx會根據請求特征如“Host:item.jd.com”,轉發給相應的業務Nginx節點如單品頁Nginx 1。此處為什么分兩層呢?

1、核心Nginx層是無狀態的,可以在這一層實現流量分組(內網和外網隔離、爬蟲和非爬蟲流量隔離)、內容緩存、請求頭過濾、故障切換(機房故障切換到其他機房)、限流、防火墻等一些通用型功能;

2、業務Nginx如單品頁Nginx,可以在在業務Nginx實現業務邏輯、或者反向代理到如Tomcat,在這一層可以實現內容壓縮(放在這一層的目的是減少核心Nginx的CPU壓力,將壓力分散到各業務Nginx)、AB測試、降級;即這一層的Nginx跟業務有關聯,實現業務的一些通用邏輯。

不管是核心Nginx還是業務Nginx,都應該是無狀態設計,可以水平擴容。



?

業務Nginx一般會把請求直接轉發給后端的業務應用,如Tomcat、PHP,即將請求內部轉發到相應的業務應用;當有的Tomcat出現問題了,可以在這一層摘掉;或者有的業務路徑變了在這一層進行rewrite;或者有的后端Tomcat壓力太大也可以在這一層降級,減少對后端的沖擊;或者業務需要灰度發布時也可以在這一層Nginx上控制。

?

2、單機閉環

所謂單機閉環即所有想要的數據都能從本服務器直接獲取,在大多數時候無需通過網絡去其他服務器獲取。



?

如上所示,主要有三種應用模式:

2.1、第一張圖應用場景是Nginx應用誰也不依賴,比如我們的Cookie白名單應用,其目的是不在白名單中的Cookie將被清理,防止大家隨便將Cookie寫到jd.om根下;大家訪問http://www.jd.com時,會看到一個http://ccc.jd.com/cookie_check的請求用來清理Cookie的;對于這種應用非常簡單,不需要依賴數據源,直接單應用閉環即可。

?

2.2、第二張圖,是讀取本機文件系統,如靜態資源合并:比如訪問http://item.jd.com/1856584.html,查看源碼會發現【<link type="text/css" rel="stylesheet" href="//misc.360buyimg.com/jdf/1.0.0/unit/??ui-base/1.0.0/ui-base.css,shortcut/2.0.0/shortcut.css,global-header/1.0.0/global-header.css,myjd/2.0.0/myjd.css,nav/2.0.0/nav.css,shoppingcart/2.0.0/shoppingcart.css,global-footer/1.0.0/global-footer.css,service/1.0.0/service.css"/>】這種請求,即多個請求合并為一個發給服務端,服務端進行了文件資源的合并;


?

目前有成熟的Nginx模塊如nginx-http-concat進行靜態資源合并;因為我們使用了OpenResty,那么我們完全可以使用Lua編寫程序實現該功能,比如已經有人寫了nginx-lua-static-merger來實現這個功能。

?

還一些業務型應用場景如下圖所示


?

商品頁面是由商品框架和其他維度的頁面片段(面包屑、相關分類、商家信息、規格參數、商品詳情)組成;或者首頁是由首頁框架和一些頁面片段(分類、輪播圖、樓層1、樓層N)組成;分維度是因為不同的維度是獨立變化的。對于這種靜態內容但是需要進行框架內容嵌入的方式,Nginx自帶的SSI(Server Side Include)可以很輕松的完成;也可以使用Lua程序更靈活的完成(讀取框架、讀取頁面片段、合并輸出)。

?

比如商品頁面的架構我們可以這樣:


?

首先接收到商品變更消息,商品頁面同步Worker會根據消息維度生成相關的頁面推送到Nginx服務器;Nginx應用再通過SSI輸出。目前京東商品詳情頁沒有再采用這種架構,具體架構可以參考《構建需求響應式億級商品詳情頁》。

?

對于首頁的架構是類似的,因為其特點(框架變化少,樓層變化較頻繁)和個性化的要求,樓層一般實現為異步加載。

?

2.3、 第三張圖和第二張圖的不同處是不再直接讀取文件系統,而是讀取本機的Redis或者Redis集群或者如SSDB這種持久化存儲或者其他存儲系統都是可以的,比如直接說的商品頁面可以使用SSDB進行存儲實現。文件系統一個很大的問題是當多臺服務器時需要Worker去寫多臺服務器,而這個過程可以使用SSDB的主從實現。



?此處可以看到,不管是圖二還是圖三架構,都需要Worker去進行數據推送;假設本機數據丟了可怎么辦?因此實際大部分應用不會是完全單機閉環的,而是會采用如下架構:

?





???

即首先讀本機,如果沒數據會回源到相應的Web應用從數據源拉取原始數據進行處理。這種架構的大部分場景本機都可以命中數據,只有很少一部分情況會回源到Web應用。

?

如京東的實時價格/動態服務就是采用類似架構。

?

3、分布式閉環

單機閉環會遇到如下兩個主要問題: 1、數據不一致問題(比如沒有采用主從架構導致不同服務器數據不一致);2、遇到存儲瓶頸(磁盤或者內存遇到了天花板)。

解決數據不一致的比較好的辦法是采用主從或者分布式集中存儲;而遇到存儲瓶頸就需要進行按照業務鍵進行分片,將數據分散到多臺服務器。

?

如采用如下架構,按照尾號將內容分布到多臺服務器。


?

即第一步先讀取分布式存儲(JIMDB是京東的一個分布式緩存/存儲系統,類似于Redis);如果不命中則回源到Tomcat集群(其會調用數據庫、服務總線獲取相關數據)來獲取相關數據。可以參考《構建需求響應式億級商品詳情頁》來獲取更詳細的架構實現。

?

JIMDB集群會進行多機房主從同步,各自機房讀取自己機房的從JIMDB集群,如下圖


?

?

4、接入網關

接入網關也可以叫做接入層,即接收到流量的入口,在入口我們可以進行如下事情:


?

4.1、核心接入Nginx會做如下事情:

1、動態負載均衡;1、普通流量走一致性哈希,提升命中率;熱點流量走輪訓減少單服務器壓力;2、根據請求特征將流量分配到不同分組并限流(爬蟲、或者流量大的IP);3、動態流量(動態增加upstream或者減少upstream或者動態負載均衡)可以使用balancer_by_lua或者微博開源的upsync;

2、防DDOS攻擊限流:可以將請求日志推送到實時計算集群,然后將需要限流的IP推送到核心Nginx進行限流;

3、非法請求過濾:比如應該有Referer卻沒有,或者應該帶著Cookie卻沒有Cookie;

4、請求聚合:比如請求的是http://c.3.cn/proxy?methods=a,b,c,核心接入Nginx會在服務端把Nginx并發的請求并把結果聚合然后一次性吐出;

5、請求頭過濾:有些業務是不需要請求頭的,因此可以在往業務Nginx轉發時把這些數據過濾掉;

6、緩存服務:使用Nginx Proxy Cache實現內容頁面的緩存;

?

4.2、業務Nginx會做如下事情:

1、緩存:對于讀服務會使用大量的緩存來提升性能,我們在設計時主要有如下緩存應用:首先讀取Nginx本地緩存? Shared Dict或者Nginx Proxy Cache,如果有直接返回內容給用戶;如果本地緩存不命中,則會讀取分布式緩存如Redis,如果有直接返回;如果還是不命中則回源到Tomcat應用讀取DB或調用服務獲取數據。另外我們會按照維度進行數據的緩存。

2、業務邏輯:我們會進行一些數據校驗/過濾邏輯前置(如商品ID必須是數字)、業務邏輯前置(獲取原子數據,然后在Nginx上寫業務邏輯)。

3、細粒度限流:按照接口特征和接口吞吐量來實現動態限流,比如后端服務快扛不住了,那我們就需要進行限流,被限流的請求作為降級請求處理;通過lua-resty-limit-traffic可以通過編程實現更靈活的降級邏輯,如根據用戶、根據URL等等各種規則,如降級了是讓用戶請求等待(比如sleep 100ms,這樣用戶請求就慢下來了,但是服務還是可用)還是返回降級內容。

4、降級:降級主要有兩種:主動降級和被動降級;如請求量太大扛不住了,那我們需要主動降級;如后端掛了或者被限流了或者后端超時了,那我們需要被動降級。降級方案可以是:1、返回默認數據如庫存默認有貨;2、返回靜態頁如預先生成的靜態頁;3、部分用戶降級,告訴部分用戶等待下再操作;4、直接降級,服務沒數據,比如商品頁面的規格參數不展示;5、只降級回源服務,即可以讀取緩存的數據返回,實現部分可用,但是不會回源處理;

5、AB測試/灰度發布:比如要上一個新的接口,可以通過在業務Nginx通過Lua寫復雜的業務規則實現不同的人看到不同的版本。

6、服務質量監控:我們可以記錄請求響應時間、緩存響應時間、反向代理服務響應時間來詳細了解到底哪塊服務慢了;另外記錄非200狀態碼錯誤來了解服務的可用率。

?

京東的交易大Nginx節點、無線部門正在開發的無線Nginx網關、和單品頁統一服務都是接入網關的實踐,而單品頁統一服務架構可以參考《京東商品詳情頁服務閉環實踐》。

?

5、Web應用

此處所說的Web應用指的是頁面模板渲染類型應用或者API服務類型應用;比如京東列表頁/商品詳情頁就是一個模板渲染類型的應用,核心業務邏輯都是使用Lua寫的,部署到Nginx容器。目前核心業務代碼行數有5000多行,模板頁面有2000多行,涉及到大量的計算邏輯,性能數據可以參考《構建需求響應式億級商品詳情頁》。



?

整體處理過程和普通Web應用沒什么區別:首先接收請求并進行解析;然后讀取JIMDB集群數據、如果沒有則回源到Tomcat獲取;然后進行業務邏輯處理;渲染模板;將響應內容返回給用戶。

?

三、如何使用Nginx+Lua開發Web應用

開發一個Web應用我們需要從項目搭建、功能開發、項目部署幾個層面完成。

?

3.1、項目搭建?

Java代碼 ?

  • /export/App/nginx-app ??
  • ?-------bin(腳本) ??
  • ?------------start.sh ??
  • ?------------stop.sh ??
  • ?-------config(配置文件) ??
  • ?------------nginx.conf ??
  • ?------------domain ??
  • ?----------------nginx_product.conf ??
  • ?------------resources.properties ??
  • ?-------lua(業務代碼) ??
  • ?------------init.lua ??
  • ?------------product_controller.lua ??
  • ?-------template(模板) ??
  • ?--------------prodoct.html ??
  • ?-------lualib(公共Lua庫) ??
  • ?------------jd ??
  • ?----------------product_util.lua ??
  • ?----------------product_data.lua ??
  • ?------------resty ??
  • ?----------------redis.lua ??
  • ?----------------template.lua??
  • /export/App/nginx-app-------bin(腳本)------------start.sh------------stop.sh-------config(配置文件)------------nginx.conf------------domain----------------nginx_product.conf------------resources.properties-------lua(業務代碼)------------init.lua------------product_controller.lua-------template(模板)--------------prodoct.html-------lualib(公共Lua庫)------------jd----------------product_util.lua----------------product_data.lua------------resty----------------redis.lua----------------template.lua

    ??

    ?整個項目結構從啟停腳本、配置文件、公共組件、業務代碼、模板代碼幾塊進行劃分。

    ?

    1、啟停腳本

    啟停腳本放在項目目錄/export/App/nginx-app/bin/下。

    start.sh是啟動和更新腳本,即如果nginx沒有啟動則啟動起來,否則reload:?

    Java代碼 ?

  • if?nginx沒啟動?then ??
  • ??sudo?/export/servers/nginx/sbin/nginx??-t?-c?/export/App/nginx-app/config/nginx.conf ??
  • ??sudo?/export/servers/nginx/sbin/nginx??-c?/export/App/nginx-app/config/nginx.conf ??
  • else??
  • ??sudo?/export/servers/nginx/sbin/nginx??-t ??
  • ??sudo?/export/servers/nginx/sbin/nginx??-s?reload ??
  • end????
  • if nginx沒啟動 thensudo /export/servers/nginx/sbin/nginx -t -c /export/App/nginx-app/config/nginx.confsudo /export/servers/nginx/sbin/nginx -c /export/App/nginx-app/config/nginx.conf elsesudo /export/servers/nginx/sbin/nginx -tsudo /export/servers/nginx/sbin/nginx -s reload end ?

    stop.sh是停止Nginx腳本:?

    Java代碼 ?

  • sudo?/export/servers/nginx/sbin/nginx??-s?quit???
  • sudo /export/servers/nginx/sbin/nginx -s quit?

    ?

    2、配置文件

    配置文件放在/export/App/nginx-app/config目錄下,包括了nginx.conf配置文件、nginx項目配置文件和資源配置文件。

    ?

    nginx.confg配置文件??

    Java代碼 ?

  • worker_processes??1; ??
  • events?{ ??
  • ????worker_connections??1024; ??
  • } ??
  • http?{ ??
  • ???include???????mime.types; ??
  • ???default_type??text/html; ??
  • ???#gzip相關 ??
  • ???#超時時間 ??
  • ???#日志格式 ??
  • ???#反向代理配置 ??
  • ??
  • ???#lua依賴路徑 ??
  • ???lua_package_path??"/export/App/nginx-app/lualib/?.lua;;"; ??
  • ???lua_package_cpath??"/export/App/nginx-app/lualib/?.so;;"; ??
  • ??
  • ???#server配置 ??
  • ???include?/export/App/nginx-app/config/domains/*; ??
  • ??
  • ???#初始化腳本 ??
  • ???init_by_lua_file?"/export/App/nginx-app/lua/init.lua"; ??
  • }???
  • worker_processes 1; events {worker_connections 1024; } http {include mime.types;default_type text/html;#gzip相關#超時時間#日志格式#反向代理配置#lua依賴路徑lua_package_path "/export/App/nginx-app/lualib/?.lua;;";lua_package_cpath "/export/App/nginx-app/lualib/?.so;;";#server配置include /export/App/nginx-app/config/domains/*;#初始化腳本init_by_lua_file "/export/App/nginx-app/lua/init.lua"; }?

    對于nginx.conf會進行一些通用的配置,如工作進程數、超時時間、壓縮、日志格式、反向代理等相關配置;另外需要指定如下配置:

    lua_package_path、lua_package_cpath指定我們依賴的通用Lua庫從哪里加載;

    include /export/App/nginx-app/config/domains/*:用于加載server相關的配置,此處通過*可以在一個nginx下指定多個server配置;

    init_by_lua_file "/export/App/nginx-app/lua/init.lua":執行項目的一些初始化配置,比如加載配置文件。

    ?

    nginx項目配置文件

    /export/App/nginx-app/config/domains/nginx_product.conf用于配置當前web應用的一些server相關的配置:?

    Java代碼 ?

  • #upstream ??
  • upstream?item_http_upstream?{ ??
  • ????server?192.168.1.1?max_fails=2?fail_timeout=30s?weight=5; ??
  • ????server?192.168.1.2?max_fails=2?fail_timeout=30s?weight=5; ??
  • } ??
  • #緩存 ??
  • lua_shared_dict?item_local_shop_cache?600m; ??
  • server?{ ??
  • ?????listen???????????????????80; ??
  • ?????server_name??????????????item.jd.com?item.jd.hk; ??
  • ?????#模板文件從哪加載 ??
  • ????set?$template_root?"/export/App/nginx-app/template?"; ??
  • ?????#url映射 ??
  • ????????location?~*?"^/product/(\d+)\.html$"?{ ??
  • ????????????rewrite?/product/(.*)????http://item.jd.com/$1?permanent; ??
  • ????????} ??
  • ????location?~*?"^/(\d{6,12})\.html$"?{ ??
  • ????????????default_type?text/html; ??
  • ????????????charset?gbk; ??
  • ????????????lua_code_cache?on; ??
  • ????????????content_by_lua_file?"/export/App/nginx-app/lua/product_controller.lua"; ??
  • ????????} ??
  • }???
  • #upstream upstream item_http_upstream {server 192.168.1.1 max_fails=2 fail_timeout=30s weight=5;server 192.168.1.2 max_fails=2 fail_timeout=30s weight=5; } #緩存 lua_shared_dict item_local_shop_cache 600m; server {listen 80;server_name item.jd.com item.jd.hk;#模板文件從哪加載set $template_root "/export/App/nginx-app/template ";#url映射location ~* "^/product/(\d+)\.html$" {rewrite /product/(.*) http://item.jd.com/$1 permanent;}location ~* "^/(\d{6,12})\.html$" {default_type text/html;charset gbk;lua_code_cache on;content_by_lua_file "/export/App/nginx-app/lua/product_controller.lua";} }?

    我們需要指定如upstream、共享字典配置、server配置、模板文件從哪加載、url映射,比如我們訪問http://item.jd.com/1856584.html將交給/export/App/nginx-app/lua/product_controller.lua處理;也就是說我們項目的入口就有了。

    ?

    資源配置文件resources.properties包含了我們的一些比如開關的配置、緩存服務器地址的配置等等。

    ?

    3、業務代碼

    /export/App/nginx-app/lua/目錄里存放了我們的lua業務代碼,init.lua用于讀取如resources.properties來進行一些項目初始化;product_controller.lua可以看成Java Web中的Servlet,接收、處理、響應用戶請求。

    ?

    4、模板

    模板文件放在/export/App/nginx-app/template/目錄下,使用相應的模板引擎進行編寫頁面模板,然后渲染輸出。

    ?

    5、公共Lua庫

    存放了一些如redis、template等相關的公共Lua庫,還有一些我們項目中通用的工具庫如product_util.lua。

    ?

    到此一個簡單的項目的結構就介紹完了,對于開發一個項目來說還會牽扯到分模塊等工作,不過對于我們這種Lua應用來說,建議不要過度抽象,盡量小巧即可。

    ?

    3.2、功能開發

    接下來就需要使用相應的API來實現我們的業務了,比如product_controller.lua:

    Java代碼 ?

  • --加載Lua模塊庫 ??
  • local?template?=?require("resty.template")?? ??
  • --1、獲取請求參數中的商品ID ??
  • local?skuId?=?ngx.req.get_uri_args()["skuId"]; ??
  • --2、調用相應的服務獲取數據 ??
  • local?data?=?api.getData(skuId) ??
  • ??
  • --3、渲染模板 ??
  • local?func?=?template.compile("product.html")?? ??
  • local?content?=?func(data)?? ??
  • --4、通過ngx?API輸出內容?? ??
  • ngx.say(content)?????
  • --加載Lua模塊庫 local template = require("resty.template") --1、獲取請求參數中的商品ID local skuId = ngx.req.get_uri_args()["skuId"]; --2、調用相應的服務獲取數據 local data = api.getData(skuId)--3、渲染模板 local func = template.compile("product.html") local content = func(data) --4、通過ngx API輸出內容 ngx.say(content) ?

    開發完成后將項目部署到測試環境,執行start.sh啟動nginx然后進行測試。

    詳細的開發過程和API的使用,請參考《跟我學Nginx+Lua開發》。此處不做具體編碼實現。

    ?

    參考源碼:Nginx+Lua(OpenResty) HelloWorld

    ?

    四、基于Nginx+Lua的常用功能總結

    到此我們對于Nginx開發已經有了一個整體的認識,對于Nginx粘合Lua來開發應用可以說是一把鋒利的瑞士軍刀,可以幫我們很容易的解決很多問題,可以開發Web應用、接入網關、API網關、消息推送、日志采集等應用,不過個人認為適合開發業務邏輯單一、核心代碼行數較少的應用,不適合業務邏輯復雜、功能繁多的業務型或者企業級應用;最后我們總結下基于Nginx+Lua的常用架構模式中一些常見實踐和場景:

    ? 動態負載均衡;

    ? 防火墻(DDOS、IP/URL/UserAgent/Referer黑名單、防盜鏈等)

    ? 限流;

    ? 降級;

    ? AB測試/灰度發布;

    ? 多級緩存模式;

    ? 服務端請求聚合;

    ? 服務質量監控。

    ?

    一些問題

    1、在開發nginx應用時使用UTF-8編碼可以減去很多麻煩;

    2、GBK轉碼解碼時使用GB18030,否則一些特殊字符會出現亂碼;

    3、cjson庫對于如\uab1這種錯誤的unicode轉碼會失敗,可以使用純Lua編寫的dkjson;

    4、社區版nginx不支持upstream的域名動態解析;可以考慮proxy_pass http://p.3.local/prices/mgets$is_args$args,然后配合resolver來實現;或者在lua中進行http調用;如果DNS遇到性能瓶頸可以考慮在本機部署如dnsmasq來緩存;或者考慮使用balancer_by_lua功能實現動態upstream;

    5、為響應添加處理服務器IP的響應頭,方便定位問題;

    6、根據業務設置合理的超時時間;

    7、走CDN的業務當發生錯誤時返回的500/503/302/301等非正常響應不要設置緩存。

    ?

    五、參考文資料

    深入 Nginx:我們是如何為性能和規模做設計的

    ??http://blog.jobbole.com/88766/

    Nginx變量漫談/配置指令的執行順序

    ??http://blog.sina.com.cn/openresty

    ngx_lua文檔

    ??https://github.com/openresty/lua-nginx-module#readme

    OpenResty最佳實踐

    ??https://moonbingbing.gitbooks.io/openresty-best-practices/content/lua/brief.html

    跟我學Nginx+Lua開發

    ??http://jinnianshilongnian.iteye.com/blog/2190344

    構建需求響應式億級商品詳情頁

    ??http://jinnianshilongnian.iteye.com/blog/2235572

    京東商品詳情頁服務閉環實踐

    ??http://jinnianshilongnian.iteye.com/blog/2258111?

    Upsync:微博開源基于Nginx容器動態流量管理方案

    ??http://toutiao.com/a6254279391729139970

    摘自

    在互聯網公司,Nginx可以說是標配組件,但是主要場景還是負載均衡、反向代理、代理緩存、限流等場景;而把Nginx作為一個Web容器使用的還不是那么廣泛。Nginx的高性能是大家公認的,而Nginx開發主要是以C/C++模塊的形式進行,整體學習和開發成本偏高;如果有一種簡單的語言來實現Web應用的開發,那么Nginx絕對是把好的瑞士軍刀;目前Nginx團隊也開始意識到這個問題,開發了nginxScript:可以在Nginx中使用JavaScript進行動態配置一些變量和動態腳本執行;而目前市面上用的非常成熟的擴展是由章亦春將Lua和Nginx粘合的ngx_lua模塊,并且將Nginx核心、LuaJIT、ngx_lua模塊、許多有用的Lua庫和常用的第三方Nginx模塊組合在一起成為OpenResty,這樣開發人員就可以安裝OpenResty,使用Lua編寫腳本,然后部署到Nginx Web容器中運行。從而非常輕松就能開發出高性能的Web服務。

    ?

    接下來我們就認識下Nginx、Lua、ngx_lua模塊和ngx_lua到底能開發哪些類型的web應用。

    ?

    ?

    一、ngx_lua簡介

    1、Nginx優點

    Nginx設計為一個主進程多個工作進程的工作模式,每個進程是單線程來處理多個連接,而且每個工作進程采用了非阻塞I/O來處理多個連接,從而減少了線程上下文切換,從而實現了公認的高性能、高并發;因此在生成環境中會通過把CPU綁定給Nginx工作進程從而提升其性能;另外因為單線程工作模式的特點,內存占用就非常少了。

    Nginx更改配置重啟速度非常快,可以毫秒級,而且支持不停止Nginx進行升級Nginx版本、動態重載Nginx配置。

    Nginx模塊也是非常多,功能也很強勁,不僅可以作為http負載均衡,Nginx發布1.9.0版本還支持TCP負載均衡,還可以很容易的實現內容緩存、web服務器、反向代理、訪問控制等功能。

    ?

    2、Lua的優點

    Lua是一種輕量級、可嵌入式的腳本語言,這樣可以非常容易的嵌入到其他語言中使用。另外Lua提供了協程并發,即以同步調用的方式進行異步執行,從而實現并發,比起回調機制的并發來說代碼更容易編寫和理解,排查問題也會容易。Lua還提供了閉包機制,函數可以作為First Class Value 進行參數傳遞,另外其實現了標記清除垃圾收集。

    因為Lua的小巧輕量級,可以在Nginx中嵌入Lua VM,請求的時候創建一個VM,請求結束的時候回收VM。

    ?

    3、什么是ngx_lua

    ngx_lua是Nginx的一個模塊,將Lua嵌入到Nginx中,從而可以使用Lua來編寫腳本,這樣就可以使用Lua編寫應用腳本,部署到Nginx中運行,即Nginx變成了一個Web容器;這樣開發人員就可以使用Lua語言開發高性能Web應用了。

    ngx_lua提供了與Nginx交互的很多的API,對于開發人員來說只需要學習這些API就可以進行功能開發,而對于開發web應用來說,如果接觸過Servlet的話,其開發和Servlet類似,無外乎就是知道接收請求、參數解析、功能處理、返回響應這幾步的API是什么樣子的。

    ?

    4、開發環境

    我們可以使用OpenResty來搭建開發環境,OpenResty將Nginx核心、LuaJIT、許多有用的Lua庫和Nginx第三方模塊打包在一起;這樣開發人員只需要安裝OpenResty,不需要了解Nginx核心和寫復雜的C/C++模塊就可以,只需要使用Lua語言進行Web應用開發了。

    如何安裝可以參考《跟我學Nginx+Lua開發》。

    ?

    5、OpenResty生態

    OpenResty提供了一些常用的ngx_lua開發模塊:如

    ? lua-resty-memcached

    ? lua-resty-mysql

    ? lua-resty-redis

    ? lua-resty-dns

    ? lua-resty-limit-traffic

    ? lua-resty-template

    這些模塊涉及到如mysql數據庫、redis、限流、模塊渲染等常用功能組件;另外也有很多第三方的ngx_lua組件供我們使用,對于大部分應用場景來說現在生態環境中的組件已經足夠多了;如果不滿足需求也可以自己去寫來完成自己的需求。

    ?

    6、場景

    理論上可以使用ngx_lua開發各種復雜的web應用,不過Lua是一種腳本/動態語言,不適合業務邏輯比較重的場景,適合小巧的應用場景,代碼行數保持在幾十行到幾千行。目前見到的一些應用場景:

    web應用:會進行一些業務邏輯處理,甚至進行耗CPU的模板渲染,一般流程:mysql/redis/http獲取數據、業務處理、產生JSON/XML/模板渲染內容,比如京東的列表頁/商品詳情頁;

    接入網關:實現如數據校驗前置、緩存前置、數據過濾、API請求聚合、AB測試、灰度發布、降級、監控等功能,比如京東的交易大Nginx節點、無線部門正在開發的無線網關、單品頁統一服務、實時價格、動態服務;

    Web防火墻:可以進行IP/URL/UserAgent/Referer黑名單、限流等功能;

    緩存服務器:可以對響應內容進行緩存,減少到后端的請求,從而提升性能;

    其他:如靜態資源服務器、消息推送服務、縮略圖裁剪等。

    ?

    二、基于Nginx+Lua的常用架構模式

    1、負載均衡

    ?

    如上圖,我們首先通過LVS+HAProxy將流量轉發給核心Nginx 1和核心Nginx 2,即實現了流量的負載均衡,此處可以使用如輪訓、一致性哈希等調度算法來實現負載的轉發;然后核心Nginx會根據請求特征如“Host:item.jd.com”,轉發給相應的業務Nginx節點如單品頁Nginx 1。此處為什么分兩層呢?

    1、核心Nginx層是無狀態的,可以在這一層實現流量分組(內網和外網隔離、爬蟲和非爬蟲流量隔離)、內容緩存、請求頭過濾、故障切換(機房故障切換到其他機房)、限流、防火墻等一些通用型功能;

    2、業務Nginx如單品頁Nginx,可以在在業務Nginx實現業務邏輯、或者反向代理到如Tomcat,在這一層可以實現內容壓縮(放在這一層的目的是減少核心Nginx的CPU壓力,將壓力分散到各業務Nginx)、AB測試、降級;即這一層的Nginx跟業務有關聯,實現業務的一些通用邏輯。

    不管是核心Nginx還是業務Nginx,都應該是無狀態設計,可以水平擴容。



    ?

    業務Nginx一般會把請求直接轉發給后端的業務應用,如Tomcat、PHP,即將請求內部轉發到相應的業務應用;當有的Tomcat出現問題了,可以在這一層摘掉;或者有的業務路徑變了在這一層進行rewrite;或者有的后端Tomcat壓力太大也可以在這一層降級,減少對后端的沖擊;或者業務需要灰度發布時也可以在這一層Nginx上控制。

    ?

    2、單機閉環

    所謂單機閉環即所有想要的數據都能從本服務器直接獲取,在大多數時候無需通過網絡去其他服務器獲取。



    ?

    如上所示,主要有三種應用模式:

    2.1、第一張圖應用場景是Nginx應用誰也不依賴,比如我們的Cookie白名單應用,其目的是不在白名單中的Cookie將被清理,防止大家隨便將Cookie寫到jd.om根下;大家訪問http://www.jd.com時,會看到一個http://ccc.jd.com/cookie_check的請求用來清理Cookie的;對于這種應用非常簡單,不需要依賴數據源,直接單應用閉環即可。

    ?

    2.2、第二張圖,是讀取本機文件系統,如靜態資源合并:比如訪問http://item.jd.com/1856584.html,查看源碼會發現【<link type="text/css" rel="stylesheet" href="//misc.360buyimg.com/jdf/1.0.0/unit/??ui-base/1.0.0/ui-base.css,shortcut/2.0.0/shortcut.css,global-header/1.0.0/global-header.css,myjd/2.0.0/myjd.css,nav/2.0.0/nav.css,shoppingcart/2.0.0/shoppingcart.css,global-footer/1.0.0/global-footer.css,service/1.0.0/service.css"/>】這種請求,即多個請求合并為一個發給服務端,服務端進行了文件資源的合并;


    ?

    目前有成熟的Nginx模塊如nginx-http-concat進行靜態資源合并;因為我們使用了OpenResty,那么我們完全可以使用Lua編寫程序實現該功能,比如已經有人寫了nginx-lua-static-merger來實現這個功能。

    ?

    還一些業務型應用場景如下圖所示


    ?

    商品頁面是由商品框架和其他維度的頁面片段(面包屑、相關分類、商家信息、規格參數、商品詳情)組成;或者首頁是由首頁框架和一些頁面片段(分類、輪播圖、樓層1、樓層N)組成;分維度是因為不同的維度是獨立變化的。對于這種靜態內容但是需要進行框架內容嵌入的方式,Nginx自帶的SSI(Server Side Include)可以很輕松的完成;也可以使用Lua程序更靈活的完成(讀取框架、讀取頁面片段、合并輸出)。

    ?

    比如商品頁面的架構我們可以這樣:


    ?

    首先接收到商品變更消息,商品頁面同步Worker會根據消息維度生成相關的頁面推送到Nginx服務器;Nginx應用再通過SSI輸出。目前京東商品詳情頁沒有再采用這種架構,具體架構可以參考《構建需求響應式億級商品詳情頁》。

    ?

    對于首頁的架構是類似的,因為其特點(框架變化少,樓層變化較頻繁)和個性化的要求,樓層一般實現為異步加載。

    ?

    2.3、 第三張圖和第二張圖的不同處是不再直接讀取文件系統,而是讀取本機的Redis或者Redis集群或者如SSDB這種持久化存儲或者其他存儲系統都是可以的,比如直接說的商品頁面可以使用SSDB進行存儲實現。文件系統一個很大的問題是當多臺服務器時需要Worker去寫多臺服務器,而這個過程可以使用SSDB的主從實現。



    ?此處可以看到,不管是圖二還是圖三架構,都需要Worker去進行數據推送;假設本機數據丟了可怎么辦?因此實際大部分應用不會是完全單機閉環的,而是會采用如下架構:

    ?





    ???

    即首先讀本機,如果沒數據會回源到相應的Web應用從數據源拉取原始數據進行處理。這種架構的大部分場景本機都可以命中數據,只有很少一部分情況會回源到Web應用。

    ?

    如京東的實時價格/動態服務就是采用類似架構。

    ?

    3、分布式閉環

    單機閉環會遇到如下兩個主要問題: 1、數據不一致問題(比如沒有采用主從架構導致不同服務器數據不一致);2、遇到存儲瓶頸(磁盤或者內存遇到了天花板)。

    解決數據不一致的比較好的辦法是采用主從或者分布式集中存儲;而遇到存儲瓶頸就需要進行按照業務鍵進行分片,將數據分散到多臺服務器。

    ?

    如采用如下架構,按照尾號將內容分布到多臺服務器。


    ?

    即第一步先讀取分布式存儲(JIMDB是京東的一個分布式緩存/存儲系統,類似于Redis);如果不命中則回源到Tomcat集群(其會調用數據庫、服務總線獲取相關數據)來獲取相關數據。可以參考《構建需求響應式億級商品詳情頁》來獲取更詳細的架構實現。

    ?

    JIMDB集群會進行多機房主從同步,各自機房讀取自己機房的從JIMDB集群,如下圖


    ?

    ?

    4、接入網關

    接入網關也可以叫做接入層,即接收到流量的入口,在入口我們可以進行如下事情:


    ?

    4.1、核心接入Nginx會做如下事情:

    1、動態負載均衡;1、普通流量走一致性哈希,提升命中率;熱點流量走輪訓減少單服務器壓力;2、根據請求特征將流量分配到不同分組并限流(爬蟲、或者流量大的IP);3、動態流量(動態增加upstream或者減少upstream或者動態負載均衡)可以使用balancer_by_lua或者微博開源的upsync;

    2、防DDOS攻擊限流:可以將請求日志推送到實時計算集群,然后將需要限流的IP推送到核心Nginx進行限流;

    3、非法請求過濾:比如應該有Referer卻沒有,或者應該帶著Cookie卻沒有Cookie;

    4、請求聚合:比如請求的是http://c.3.cn/proxy?methods=a,b,c,核心接入Nginx會在服務端把Nginx并發的請求并把結果聚合然后一次性吐出;

    5、請求頭過濾:有些業務是不需要請求頭的,因此可以在往業務Nginx轉發時把這些數據過濾掉;

    6、緩存服務:使用Nginx Proxy Cache實現內容頁面的緩存;

    ?

    4.2、業務Nginx會做如下事情:

    1、緩存:對于讀服務會使用大量的緩存來提升性能,我們在設計時主要有如下緩存應用:首先讀取Nginx本地緩存? Shared Dict或者Nginx Proxy Cache,如果有直接返回內容給用戶;如果本地緩存不命中,則會讀取分布式緩存如Redis,如果有直接返回;如果還是不命中則回源到Tomcat應用讀取DB或調用服務獲取數據。另外我們會按照維度進行數據的緩存。

    2、業務邏輯:我們會進行一些數據校驗/過濾邏輯前置(如商品ID必須是數字)、業務邏輯前置(獲取原子數據,然后在Nginx上寫業務邏輯)。

    3、細粒度限流:按照接口特征和接口吞吐量來實現動態限流,比如后端服務快扛不住了,那我們就需要進行限流,被限流的請求作為降級請求處理;通過lua-resty-limit-traffic可以通過編程實現更靈活的降級邏輯,如根據用戶、根據URL等等各種規則,如降級了是讓用戶請求等待(比如sleep 100ms,這樣用戶請求就慢下來了,但是服務還是可用)還是返回降級內容。

    4、降級:降級主要有兩種:主動降級和被動降級;如請求量太大扛不住了,那我們需要主動降級;如后端掛了或者被限流了或者后端超時了,那我們需要被動降級。降級方案可以是:1、返回默認數據如庫存默認有貨;2、返回靜態頁如預先生成的靜態頁;3、部分用戶降級,告訴部分用戶等待下再操作;4、直接降級,服務沒數據,比如商品頁面的規格參數不展示;5、只降級回源服務,即可以讀取緩存的數據返回,實現部分可用,但是不會回源處理;

    5、AB測試/灰度發布:比如要上一個新的接口,可以通過在業務Nginx通過Lua寫復雜的業務規則實現不同的人看到不同的版本。

    6、服務質量監控:我們可以記錄請求響應時間、緩存響應時間、反向代理服務響應時間來詳細了解到底哪塊服務慢了;另外記錄非200狀態碼錯誤來了解服務的可用率。

    ?

    京東的交易大Nginx節點、無線部門正在開發的無線Nginx網關、和單品頁統一服務都是接入網關的實踐,而單品頁統一服務架構可以參考《京東商品詳情頁服務閉環實踐》。

    ?

    5、Web應用

    此處所說的Web應用指的是頁面模板渲染類型應用或者API服務類型應用;比如京東列表頁/商品詳情頁就是一個模板渲染類型的應用,核心業務邏輯都是使用Lua寫的,部署到Nginx容器。目前核心業務代碼行數有5000多行,模板頁面有2000多行,涉及到大量的計算邏輯,性能數據可以參考《構建需求響應式億級商品詳情頁》。



    ?

    整體處理過程和普通Web應用沒什么區別:首先接收請求并進行解析;然后讀取JIMDB集群數據、如果沒有則回源到Tomcat獲取;然后進行業務邏輯處理;渲染模板;將響應內容返回給用戶。

    ?

    三、如何使用Nginx+Lua開發Web應用

    開發一個Web應用我們需要從項目搭建、功能開發、項目部署幾個層面完成。

    ?

    3.1、項目搭建?

    Java代碼 ?

  • /export/App/nginx-app ??
  • ?-------bin(腳本) ??
  • ?------------start.sh ??
  • ?------------stop.sh ??
  • ?-------config(配置文件) ??
  • ?------------nginx.conf ??
  • ?------------domain ??
  • ?----------------nginx_product.conf ??
  • ?------------resources.properties ??
  • ?-------lua(業務代碼) ??
  • ?------------init.lua ??
  • ?------------product_controller.lua ??
  • ?-------template(模板) ??
  • ?--------------prodoct.html ??
  • ?-------lualib(公共Lua庫) ??
  • ?------------jd ??
  • ?----------------product_util.lua ??
  • ?----------------product_data.lua ??
  • ?------------resty ??
  • ?----------------redis.lua ??
  • ?----------------template.lua??
  • /export/App/nginx-app-------bin(腳本)------------start.sh------------stop.sh-------config(配置文件)------------nginx.conf------------domain----------------nginx_product.conf------------resources.properties-------lua(業務代碼)------------init.lua------------product_controller.lua-------template(模板)--------------prodoct.html-------lualib(公共Lua庫)------------jd----------------product_util.lua----------------product_data.lua------------resty----------------redis.lua----------------template.lua

    ??

    ?整個項目結構從啟停腳本、配置文件、公共組件、業務代碼、模板代碼幾塊進行劃分。

    ?

    1、啟停腳本

    啟停腳本放在項目目錄/export/App/nginx-app/bin/下。

    start.sh是啟動和更新腳本,即如果nginx沒有啟動則啟動起來,否則reload:?

    Java代碼 ?

  • if?nginx沒啟動?then ??
  • ??sudo?/export/servers/nginx/sbin/nginx??-t?-c?/export/App/nginx-app/config/nginx.conf ??
  • ??sudo?/export/servers/nginx/sbin/nginx??-c?/export/App/nginx-app/config/nginx.conf ??
  • else??
  • ??sudo?/export/servers/nginx/sbin/nginx??-t ??
  • ??sudo?/export/servers/nginx/sbin/nginx??-s?reload ??
  • end????
  • if nginx沒啟動 thensudo /export/servers/nginx/sbin/nginx -t -c /export/App/nginx-app/config/nginx.confsudo /export/servers/nginx/sbin/nginx -c /export/App/nginx-app/config/nginx.conf elsesudo /export/servers/nginx/sbin/nginx -tsudo /export/servers/nginx/sbin/nginx -s reload end ?

    stop.sh是停止Nginx腳本:?

    Java代碼 ?

  • sudo?/export/servers/nginx/sbin/nginx??-s?quit???
  • sudo /export/servers/nginx/sbin/nginx -s quit?

    ?

    2、配置文件

    配置文件放在/export/App/nginx-app/config目錄下,包括了nginx.conf配置文件、nginx項目配置文件和資源配置文件。

    ?

    nginx.confg配置文件??

    Java代碼 ?

  • worker_processes??1; ??
  • events?{ ??
  • ????worker_connections??1024; ??
  • } ??
  • http?{ ??
  • ???include???????mime.types; ??
  • ???default_type??text/html; ??
  • ???#gzip相關 ??
  • ???#超時時間 ??
  • ???#日志格式 ??
  • ???#反向代理配置 ??
  • ??
  • ???#lua依賴路徑 ??
  • ???lua_package_path??"/export/App/nginx-app/lualib/?.lua;;"; ??
  • ???lua_package_cpath??"/export/App/nginx-app/lualib/?.so;;"; ??
  • ??
  • ???#server配置 ??
  • ???include?/export/App/nginx-app/config/domains/*; ??
  • ??
  • ???#初始化腳本 ??
  • ???init_by_lua_file?"/export/App/nginx-app/lua/init.lua"; ??
  • }???
  • worker_processes 1; events {worker_connections 1024; } http {include mime.types;default_type text/html;#gzip相關#超時時間#日志格式#反向代理配置#lua依賴路徑lua_package_path "/export/App/nginx-app/lualib/?.lua;;";lua_package_cpath "/export/App/nginx-app/lualib/?.so;;";#server配置include /export/App/nginx-app/config/domains/*;#初始化腳本init_by_lua_file "/export/App/nginx-app/lua/init.lua"; }?

    對于nginx.conf會進行一些通用的配置,如工作進程數、超時時間、壓縮、日志格式、反向代理等相關配置;另外需要指定如下配置:

    lua_package_path、lua_package_cpath指定我們依賴的通用Lua庫從哪里加載;

    include /export/App/nginx-app/config/domains/*:用于加載server相關的配置,此處通過*可以在一個nginx下指定多個server配置;

    init_by_lua_file "/export/App/nginx-app/lua/init.lua":執行項目的一些初始化配置,比如加載配置文件。

    ?

    nginx項目配置文件

    /export/App/nginx-app/config/domains/nginx_product.conf用于配置當前web應用的一些server相關的配置:?

    Java代碼 ?

  • #upstream ??
  • upstream?item_http_upstream?{ ??
  • ????server?192.168.1.1?max_fails=2?fail_timeout=30s?weight=5; ??
  • ????server?192.168.1.2?max_fails=2?fail_timeout=30s?weight=5; ??
  • } ??
  • #緩存 ??
  • lua_shared_dict?item_local_shop_cache?600m; ??
  • server?{ ??
  • ?????listen???????????????????80; ??
  • ?????server_name??????????????item.jd.com?item.jd.hk; ??
  • ?????#模板文件從哪加載 ??
  • ????set?$template_root?"/export/App/nginx-app/template?"; ??
  • ?????#url映射 ??
  • ????????location?~*?"^/product/(\d+)\.html$"?{ ??
  • ????????????rewrite?/product/(.*)????http://item.jd.com/$1?permanent; ??
  • ????????} ??
  • ????location?~*?"^/(\d{6,12})\.html$"?{ ??
  • ????????????default_type?text/html; ??
  • ????????????charset?gbk; ??
  • ????????????lua_code_cache?on; ??
  • ????????????content_by_lua_file?"/export/App/nginx-app/lua/product_controller.lua"; ??
  • ????????} ??
  • }???
  • #upstream upstream item_http_upstream {server 192.168.1.1 max_fails=2 fail_timeout=30s weight=5;server 192.168.1.2 max_fails=2 fail_timeout=30s weight=5; } #緩存 lua_shared_dict item_local_shop_cache 600m; server {listen 80;server_name item.jd.com item.jd.hk;#模板文件從哪加載set $template_root "/export/App/nginx-app/template ";#url映射location ~* "^/product/(\d+)\.html$" {rewrite /product/(.*) http://item.jd.com/$1 permanent;}location ~* "^/(\d{6,12})\.html$" {default_type text/html;charset gbk;lua_code_cache on;content_by_lua_file "/export/App/nginx-app/lua/product_controller.lua";} }?

    我們需要指定如upstream、共享字典配置、server配置、模板文件從哪加載、url映射,比如我們訪問http://item.jd.com/1856584.html將交給/export/App/nginx-app/lua/product_controller.lua處理;也就是說我們項目的入口就有了。

    ?

    資源配置文件resources.properties包含了我們的一些比如開關的配置、緩存服務器地址的配置等等。

    ?

    3、業務代碼

    /export/App/nginx-app/lua/目錄里存放了我們的lua業務代碼,init.lua用于讀取如resources.properties來進行一些項目初始化;product_controller.lua可以看成Java Web中的Servlet,接收、處理、響應用戶請求。

    ?

    4、模板

    模板文件放在/export/App/nginx-app/template/目錄下,使用相應的模板引擎進行編寫頁面模板,然后渲染輸出。

    ?

    5、公共Lua庫

    存放了一些如redis、template等相關的公共Lua庫,還有一些我們項目中通用的工具庫如product_util.lua。

    ?

    到此一個簡單的項目的結構就介紹完了,對于開發一個項目來說還會牽扯到分模塊等工作,不過對于我們這種Lua應用來說,建議不要過度抽象,盡量小巧即可。

    ?

    3.2、功能開發

    接下來就需要使用相應的API來實現我們的業務了,比如product_controller.lua:

    Java代碼 ?

  • --加載Lua模塊庫 ??
  • local?template?=?require("resty.template")?? ??
  • --1、獲取請求參數中的商品ID ??
  • local?skuId?=?ngx.req.get_uri_args()["skuId"]; ??
  • --2、調用相應的服務獲取數據 ??
  • local?data?=?api.getData(skuId) ??
  • ??
  • --3、渲染模板 ??
  • local?func?=?template.compile("product.html")?? ??
  • local?content?=?func(data)?? ??
  • --4、通過ngx?API輸出內容?? ??
  • ngx.say(content)?????
  • --加載Lua模塊庫 local template = require("resty.template") --1、獲取請求參數中的商品ID local skuId = ngx.req.get_uri_args()["skuId"]; --2、調用相應的服務獲取數據 local data = api.getData(skuId)--3、渲染模板 local func = template.compile("product.html") local content = func(data) --4、通過ngx API輸出內容 ngx.say(content) ?

    開發完成后將項目部署到測試環境,執行start.sh啟動nginx然后進行測試。

    詳細的開發過程和API的使用,請參考《跟我學Nginx+Lua開發》。此處不做具體編碼實現。

    ?

    參考源碼:Nginx+Lua(OpenResty) HelloWorld

    ?

    四、基于Nginx+Lua的常用功能總結

    到此我們對于Nginx開發已經有了一個整體的認識,對于Nginx粘合Lua來開發應用可以說是一把鋒利的瑞士軍刀,可以幫我們很容易的解決很多問題,可以開發Web應用、接入網關、API網關、消息推送、日志采集等應用,不過個人認為適合開發業務邏輯單一、核心代碼行數較少的應用,不適合業務邏輯復雜、功能繁多的業務型或者企業級應用;最后我們總結下基于Nginx+Lua的常用架構模式中一些常見實踐和場景:

    ? 動態負載均衡;

    ? 防火墻(DDOS、IP/URL/UserAgent/Referer黑名單、防盜鏈等)

    ? 限流;

    ? 降級;

    ? AB測試/灰度發布;

    ? 多級緩存模式;

    ? 服務端請求聚合;

    ? 服務質量監控。

    ?

    一些問題

    1、在開發nginx應用時使用UTF-8編碼可以減去很多麻煩;

    2、GBK轉碼解碼時使用GB18030,否則一些特殊字符會出現亂碼;

    3、cjson庫對于如\uab1這種錯誤的unicode轉碼會失敗,可以使用純Lua編寫的dkjson;

    4、社區版nginx不支持upstream的域名動態解析;可以考慮proxy_pass http://p.3.local/prices/mgets$is_args$args,然后配合resolver來實現;或者在lua中進行http調用;如果DNS遇到性能瓶頸可以考慮在本機部署如dnsmasq來緩存;或者考慮使用balancer_by_lua功能實現動態upstream;

    5、為響應添加處理服務器IP的響應頭,方便定位問題;

    6、根據業務設置合理的超時時間;

    7、走CDN的業務當發生錯誤時返回的500/503/302/301等非正常響應不要設置緩存。

    ?

    五、參考文資料

    深入 Nginx:我們是如何為性能和規模做設計的

    ??http://blog.jobbole.com/88766/

    Nginx變量漫談/配置指令的執行順序

    ??http://blog.sina.com.cn/openresty

    ngx_lua文檔

    ??https://github.com/openresty/lua-nginx-module#readme

    OpenResty最佳實踐

    ??https://moonbingbing.gitbooks.io/openresty-best-practices/content/lua/brief.html

    跟我學Nginx+Lua開發

    ??http://jinnianshilongnian.iteye.com/blog/2190344

    構建需求響應式億級商品詳情頁

    ??http://jinnianshilongnian.iteye.com/blog/2235572

    京東商品詳情頁服務閉環實踐

    ??http://jinnianshilongnian.iteye.com/blog/2258111?

    Upsync:微博開源基于Nginx容器動態流量管理方案

    ??http://toutiao.com/a6254279391729139970

    總結

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

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

    无码av岛国片在线播放 | 宝宝好涨水快流出来免费视频 | 婷婷丁香六月激情综合啪 | 国产成人亚洲综合无码 | 国产精品a成v人在线播放 | 强辱丰满人妻hd中文字幕 | 乱人伦中文视频在线观看 | 麻豆国产人妻欲求不满谁演的 | 久久久精品人妻久久影视 | 少妇激情av一区二区 | 高潮毛片无遮挡高清免费视频 | 亚洲精品一区二区三区四区五区 | 精品国产一区二区三区四区在线看 | 久久久国产精品无码免费专区 | 国产无遮挡吃胸膜奶免费看 | 成在人线av无码免观看麻豆 | 国产亚洲精品久久久久久久久动漫 | 亚洲熟妇色xxxxx亚洲 | 日本乱偷人妻中文字幕 | 日韩亚洲欧美中文高清在线 | 色综合视频一区二区三区 | 黑人巨大精品欧美黑寡妇 | 一本一道久久综合久久 | 欧美精品无码一区二区三区 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产精品va在线观看无码 | 久久午夜夜伦鲁鲁片无码免费 | 中文字幕无码热在线视频 | 偷窥村妇洗澡毛毛多 | 国产后入清纯学生妹 | 亚洲精品久久久久avwww潮水 | av在线亚洲欧洲日产一区二区 | 欧美xxxx黑人又粗又长 | 国产真实伦对白全集 | 日韩 欧美 动漫 国产 制服 | 人人澡人人透人人爽 | 成人精品一区二区三区中文字幕 | 性欧美疯狂xxxxbbbb | www成人国产高清内射 | 人妻少妇精品无码专区二区 | 乱人伦人妻中文字幕无码 | 国产美女精品一区二区三区 | 亚洲人成网站免费播放 | 麻豆精品国产精华精华液好用吗 | 国产福利视频一区二区 | 内射爽无广熟女亚洲 | 亚洲一区二区三区四区 | 一本大道伊人av久久综合 | 无遮挡国产高潮视频免费观看 | 国产偷自视频区视频 | 亚洲综合另类小说色区 | 天堂а√在线中文在线 | 日本大香伊一区二区三区 | 亚洲中文字幕在线无码一区二区 | 国产人妻精品午夜福利免费 | 国产猛烈高潮尖叫视频免费 | 国产无遮挡吃胸膜奶免费看 | 国产精品高潮呻吟av久久4虎 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲国产精品久久久久久 | 国产香蕉97碰碰久久人人 | 午夜肉伦伦影院 | 午夜无码人妻av大片色欲 | 久久97精品久久久久久久不卡 | 色 综合 欧美 亚洲 国产 | 国产无遮挡又黄又爽又色 | 亚洲最大成人网站 | 熟女俱乐部五十路六十路av | 日韩av无码中文无码电影 | 免费人成网站视频在线观看 | 天天摸天天碰天天添 | 久久亚洲a片com人成 | 无码人妻出轨黑人中文字幕 | 久久综合久久自在自线精品自 | 牲欲强的熟妇农村老妇女视频 | 99久久婷婷国产综合精品青草免费 | 性色欲网站人妻丰满中文久久不卡 | 久久精品女人的天堂av | 国产av人人夜夜澡人人爽麻豆 | 日本一卡2卡3卡四卡精品网站 | 成人女人看片免费视频放人 | 日本乱人伦片中文三区 | 正在播放东北夫妻内射 | 帮老师解开蕾丝奶罩吸乳网站 | 红桃av一区二区三区在线无码av | 国产精品久久久久7777 | 疯狂三人交性欧美 | 最近免费中文字幕中文高清百度 | 亚洲热妇无码av在线播放 | 永久免费精品精品永久-夜色 | 国内揄拍国内精品少妇国语 | 特大黑人娇小亚洲女 | 老熟妇乱子伦牲交视频 | 男女爱爱好爽视频免费看 | 国产精品va在线播放 | 国产亚洲美女精品久久久2020 | 国产精品永久免费视频 | 又大又硬又黄的免费视频 | 无码福利日韩神码福利片 | 在线看片无码永久免费视频 | 欧美精品无码一区二区三区 | 久久国产精品精品国产色婷婷 | 精品成在人线av无码免费看 | 久久99久久99精品中文字幕 | 撕开奶罩揉吮奶头视频 | 欧美猛少妇色xxxxx | 天天拍夜夜添久久精品 | a片免费视频在线观看 | 精品一二三区久久aaa片 | 暴力强奷在线播放无码 | 亚洲欧美日韩成人高清在线一区 | 性欧美videos高清精品 | 色狠狠av一区二区三区 | 午夜无码区在线观看 | 一个人免费观看的www视频 | 免费看男女做好爽好硬视频 | 久久 国产 尿 小便 嘘嘘 | aⅴ在线视频男人的天堂 | 成人欧美一区二区三区黑人 | 国产欧美精品一区二区三区 | 大地资源中文第3页 | 国产美女精品一区二区三区 | 久久国产36精品色熟妇 | 国产后入清纯学生妹 | 丰满肥臀大屁股熟妇激情视频 | 成人无码视频在线观看网站 | 久久精品国产99精品亚洲 | 色综合久久网 | 1000部啪啪未满十八勿入下载 | 国产极品美女高潮无套在线观看 | 亚洲人成人无码网www国产 | 乱人伦人妻中文字幕无码久久网 | 日日鲁鲁鲁夜夜爽爽狠狠 | 色一情一乱一伦一区二区三欧美 | 荫蒂被男人添的好舒服爽免费视频 | 在线观看国产一区二区三区 | 国产特级毛片aaaaaaa高清 | 国产精品无码一区二区三区不卡 | 亚洲日韩av一区二区三区四区 | 六十路熟妇乱子伦 | 在线视频网站www色 | 亚洲欧洲日本综合aⅴ在线 | a片免费视频在线观看 | 成人免费视频一区二区 | 蜜桃视频韩日免费播放 | 中文字幕精品av一区二区五区 | 久久综合香蕉国产蜜臀av | 久久综合九色综合欧美狠狠 | 少妇被黑人到高潮喷出白浆 | 一本久久a久久精品亚洲 | 99久久精品无码一区二区毛片 | 成人综合网亚洲伊人 | 久久亚洲中文字幕精品一区 | 亚洲色欲久久久综合网东京热 | 国产熟女一区二区三区四区五区 | 欧美日本免费一区二区三区 | 精品aⅴ一区二区三区 | 亚洲熟妇色xxxxx欧美老妇y | 国内少妇偷人精品视频免费 | 日韩人妻系列无码专区 | 久久五月精品中文字幕 | 麻豆果冻传媒2021精品传媒一区下载 | 欧美精品免费观看二区 | 未满小14洗澡无码视频网站 | 国产午夜亚洲精品不卡下载 | 粉嫩少妇内射浓精videos | 亚洲va欧美va天堂v国产综合 | 成人三级无码视频在线观看 | 无码毛片视频一区二区本码 | 亚洲s色大片在线观看 | 日本一区二区三区免费高清 | 国产无av码在线观看 | 欧美人妻一区二区三区 | 亚洲人交乣女bbw | 日欧一片内射va在线影院 | 男人的天堂av网站 | 中文字幕亚洲情99在线 | 午夜理论片yy44880影院 | 亚欧洲精品在线视频免费观看 | 无码人妻久久一区二区三区不卡 | 永久免费精品精品永久-夜色 | 伦伦影院午夜理论片 | 国内揄拍国内精品少妇国语 | 亚洲 高清 成人 动漫 | 国产九九九九九九九a片 | 亚洲精品综合五月久久小说 | 成 人影片 免费观看 | 久久精品国产一区二区三区肥胖 | 免费播放一区二区三区 | 久久精品国产亚洲精品 | 色欲久久久天天天综合网精品 | 黑人大群体交免费视频 | 久久国产36精品色熟妇 | 亚洲区欧美区综合区自拍区 | 一本无码人妻在中文字幕免费 | 巨爆乳无码视频在线观看 | 无码午夜成人1000部免费视频 | 人人妻人人澡人人爽欧美一区九九 | 欧美三级不卡在线观看 | 亚洲国产精品美女久久久久 | 亚洲一区二区三区含羞草 | 国产亚洲日韩欧美另类第八页 | 国产成人综合色在线观看网站 | 久久 国产 尿 小便 嘘嘘 | 日本熟妇人妻xxxxx人hd | 无码人中文字幕 | 女高中生第一次破苞av | 午夜成人1000部免费视频 | 内射爽无广熟女亚洲 | 无码吃奶揉捏奶头高潮视频 | 大地资源网第二页免费观看 | 5858s亚洲色大成网站www | 欧美性猛交内射兽交老熟妇 | 亚洲中文无码av永久不收费 | 国产97人人超碰caoprom | 欧美日韩人成综合在线播放 | 宝宝好涨水快流出来免费视频 | 精品人妻人人做人人爽夜夜爽 | 国内老熟妇对白xxxxhd | 国产明星裸体无码xxxx视频 | 色综合天天综合狠狠爱 | 成人毛片一区二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 中国女人内谢69xxxxxa片 | 久久精品成人欧美大片 | 亚洲熟妇色xxxxx欧美老妇y | 欧美日韩在线亚洲综合国产人 | 岛国片人妻三上悠亚 | 精品国产麻豆免费人成网站 | 国产特级毛片aaaaaaa高清 | 国产综合在线观看 | 亚洲中文字幕在线无码一区二区 | 午夜无码区在线观看 | 双乳奶水饱满少妇呻吟 | www一区二区www免费 | 最近免费中文字幕中文高清百度 | 亚洲成色www久久网站 | 亚洲成av人综合在线观看 | 亚洲综合色区中文字幕 | 东京热无码av男人的天堂 | 97无码免费人妻超级碰碰夜夜 | 亚洲日韩乱码中文无码蜜桃臀网站 | 日本高清一区免费中文视频 | 天天摸天天透天天添 | 人妻少妇精品无码专区动漫 | 午夜精品一区二区三区的区别 | 丰满少妇高潮惨叫视频 | 国内精品人妻无码久久久影院蜜桃 | 精品偷拍一区二区三区在线看 | 偷窥日本少妇撒尿chinese | 性欧美熟妇videofreesex | 少妇一晚三次一区二区三区 | 久久精品国产大片免费观看 | 欧美性黑人极品hd | 又粗又大又硬又长又爽 | 18无码粉嫩小泬无套在线观看 | 欧美性黑人极品hd | 又大又硬又爽免费视频 | 国产精品美女久久久久av爽李琼 | 真人与拘做受免费视频一 | 国产精品久久久久9999小说 | 精品国产精品久久一区免费式 | 人人澡人人透人人爽 | 99久久人妻精品免费二区 | 性啪啪chinese东北女人 | 国产成人亚洲综合无码 | 国产精品久久国产三级国 | 久热国产vs视频在线观看 | 欧美 亚洲 国产 另类 | 狠狠色丁香久久婷婷综合五月 | 麻豆国产丝袜白领秘书在线观看 | 亚洲色欲色欲天天天www | 日产精品高潮呻吟av久久 | 在线播放免费人成毛片乱码 | 最新国产麻豆aⅴ精品无码 | 麻豆蜜桃av蜜臀av色欲av | 国产激情艳情在线看视频 | 18禁黄网站男男禁片免费观看 | 成年美女黄网站色大免费全看 | 日产国产精品亚洲系列 | 少妇邻居内射在线 | 天天摸天天透天天添 | 成熟女人特级毛片www免费 | 性色欲情网站iwww九文堂 | 色窝窝无码一区二区三区色欲 | 一本久久伊人热热精品中文字幕 | 全球成人中文在线 | 国产艳妇av在线观看果冻传媒 | 国产乱人偷精品人妻a片 | 国产香蕉尹人视频在线 | 亚欧洲精品在线视频免费观看 | 内射欧美老妇wbb | 少妇无码一区二区二三区 | 欧美乱妇无乱码大黄a片 | 欧美大屁股xxxxhd黑色 | 成人aaa片一区国产精品 | 国产肉丝袜在线观看 | 中国大陆精品视频xxxx | 荫蒂添的好舒服视频囗交 | 99视频精品全部免费免费观看 | 2019nv天堂香蕉在线观看 | 精品偷自拍另类在线观看 | 欧美freesex黑人又粗又大 | 国产三级久久久精品麻豆三级 | 精品无码一区二区三区的天堂 | av在线亚洲欧洲日产一区二区 | 人人爽人人爽人人片av亚洲 | 久久精品国产一区二区三区 | 99久久精品午夜一区二区 | 性欧美牲交xxxxx视频 | 国产精品久久久 | 中文字幕无线码 | 日本爽爽爽爽爽爽在线观看免 | 久久国产精品偷任你爽任你 | 国产色精品久久人妻 | 亚洲国产精品无码一区二区三区 | 青青久在线视频免费观看 | 精品无码av一区二区三区 | 国产色xx群视频射精 | 日韩av无码一区二区三区不卡 | 久久国产自偷自偷免费一区调 | 日本乱人伦片中文三区 | 国产成人综合色在线观看网站 | 国产人妻久久精品二区三区老狼 | 亚洲国产精华液网站w | 精品偷拍一区二区三区在线看 | 少妇激情av一区二区 | 四虎永久在线精品免费网址 | 国产亚洲精品精品国产亚洲综合 | 亚洲精品久久久久久一区二区 | 亚洲a无码综合a国产av中文 | 久久综合给合久久狠狠狠97色 | 欧美变态另类xxxx | 久久久久久久人妻无码中文字幕爆 | 久久久久久久人妻无码中文字幕爆 | 久久久www成人免费毛片 | 99久久久无码国产aaa精品 | 欧美人与禽zoz0性伦交 | 亚洲中文字幕va福利 | 中文字幕无线码 | 2020最新国产自产精品 | 亚洲伊人久久精品影院 | 中文字幕无码免费久久99 | 国产成人精品无码播放 | 亚洲午夜久久久影院 | 午夜精品久久久内射近拍高清 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲va欧美va天堂v国产综合 | 无码乱肉视频免费大全合集 | 妺妺窝人体色www在线小说 | 国产av人人夜夜澡人人爽麻豆 | 午夜精品一区二区三区的区别 | 色综合久久88色综合天天 | 国产成人综合美国十次 | 人人澡人人妻人人爽人人蜜桃 | 久久久久久久久蜜桃 | 人人爽人人澡人人人妻 | 免费观看又污又黄的网站 | 免费播放一区二区三区 | 色情久久久av熟女人妻网站 | 老头边吃奶边弄进去呻吟 | 日韩少妇内射免费播放 | 久久久久亚洲精品男人的天堂 | 成人一在线视频日韩国产 | 国产高清av在线播放 | 亚洲欧洲中文日韩av乱码 | 欧美激情一区二区三区成人 | 国精品人妻无码一区二区三区蜜柚 | 亚洲理论电影在线观看 | 亚洲日本va中文字幕 | 亚洲天堂2017无码中文 | 一本加勒比波多野结衣 | 国产婷婷色一区二区三区在线 | 国产卡一卡二卡三 | 欧美猛少妇色xxxxx | 午夜无码区在线观看 | av在线亚洲欧洲日产一区二区 | 久久久久久av无码免费看大片 | 国产亚洲日韩欧美另类第八页 | 色五月丁香五月综合五月 | 青青久在线视频免费观看 | 精品水蜜桃久久久久久久 | 亚洲爆乳大丰满无码专区 | 中文字幕+乱码+中文字幕一区 | 99视频精品全部免费免费观看 | 精品久久久久久人妻无码中文字幕 | 99久久精品国产一区二区蜜芽 | 日日摸日日碰夜夜爽av | 国产精品99久久精品爆乳 | 荫蒂添的好舒服视频囗交 | 久在线观看福利视频 | 欧美肥老太牲交大战 | 夜先锋av资源网站 | 东京热一精品无码av | 亚洲 激情 小说 另类 欧美 | 99视频精品全部免费免费观看 | 日日碰狠狠躁久久躁蜜桃 | 在线 国产 欧美 亚洲 天堂 | 亚洲爆乳无码专区 | 无人区乱码一区二区三区 | 亚洲天堂2017无码 | 久久国产精品二国产精品 | 欧美日韩一区二区综合 | а天堂中文在线官网 | 精品厕所偷拍各类美女tp嘘嘘 | 人妻熟女一区 | 亚洲精品成人av在线 | 成人免费视频视频在线观看 免费 | 图片区 小说区 区 亚洲五月 | 国产成人亚洲综合无码 | 亚洲精品一区国产 | 国产人妻精品午夜福利免费 | 日日鲁鲁鲁夜夜爽爽狠狠 | 又大又硬又爽免费视频 | 欧美三级不卡在线观看 | 国产人成高清在线视频99最全资源 | 亚洲va欧美va天堂v国产综合 | 久久久中文久久久无码 | 亚洲精品国产精品乱码不卡 | 无码av最新清无码专区吞精 | 中文字幕乱妇无码av在线 | 一本久道高清无码视频 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲综合在线一区二区三区 | 亚洲精品国偷拍自产在线麻豆 | 欧美成人免费全部网站 | 亚洲一区av无码专区在线观看 | 国产 精品 自在自线 | 国产真人无遮挡作爱免费视频 | 日本护士xxxxhd少妇 | 中文毛片无遮挡高清免费 | 中文久久乱码一区二区 | 日本欧美一区二区三区乱码 | 国产艳妇av在线观看果冻传媒 | 在线精品国产一区二区三区 | 黑人巨大精品欧美一区二区 | 精品 日韩 国产 欧美 视频 | 精品久久久无码中文字幕 | 色婷婷欧美在线播放内射 | 免费国产成人高清在线观看网站 | 免费看少妇作爱视频 | 无码毛片视频一区二区本码 | 久久久久se色偷偷亚洲精品av | 国产97在线 | 亚洲 | 人妻互换免费中文字幕 | 麻豆国产人妻欲求不满 | 午夜无码人妻av大片色欲 | 久久亚洲日韩精品一区二区三区 | 久久久久国色av免费观看性色 | 色欲人妻aaaaaaa无码 | 亚洲精品欧美二区三区中文字幕 | 久久综合九色综合97网 | 18无码粉嫩小泬无套在线观看 | 日本高清一区免费中文视频 | 亚洲自偷精品视频自拍 | 2019nv天堂香蕉在线观看 | 国产精品亚洲lv粉色 | 牛和人交xxxx欧美 | 亚洲中文字幕成人无码 | 欧美性猛交xxxx富婆 | 成在人线av无码免费 | 免费国产黄网站在线观看 | 国产精品亚洲а∨无码播放麻豆 | 国产熟妇高潮叫床视频播放 | 欧美乱妇无乱码大黄a片 | 亚洲天堂2017无码中文 | 国产特级毛片aaaaaa高潮流水 | 色婷婷久久一区二区三区麻豆 | 99精品无人区乱码1区2区3区 | 久久人人爽人人爽人人片ⅴ | 欧美乱妇无乱码大黄a片 | 国产熟妇高潮叫床视频播放 | 久久人人97超碰a片精品 | 婷婷丁香五月天综合东京热 | 久久五月精品中文字幕 | 亚洲s色大片在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲国产欧美在线成人 | 蜜桃无码一区二区三区 | 国产一区二区三区四区五区加勒比 | 九九热爱视频精品 | 无码人妻黑人中文字幕 | 精品无人国产偷自产在线 | 色噜噜亚洲男人的天堂 | 亚洲伊人久久精品影院 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 女人被男人躁得好爽免费视频 | 乱人伦人妻中文字幕无码久久网 | 欧美第一黄网免费网站 | 国内少妇偷人精品视频 | 97夜夜澡人人爽人人喊中国片 | 少妇人妻av毛片在线看 | 东京热男人av天堂 | 双乳奶水饱满少妇呻吟 | 夜夜躁日日躁狠狠久久av | 欧美丰满老熟妇xxxxx性 | 中文字幕无码人妻少妇免费 | 天堂а√在线地址中文在线 | 亚洲综合久久一区二区 | 久久精品国产99久久6动漫 | 人人妻人人澡人人爽精品欧美 | 性做久久久久久久免费看 | 国产真人无遮挡作爱免费视频 | 性色欲情网站iwww九文堂 | av无码电影一区二区三区 | 色噜噜亚洲男人的天堂 | 精品国产一区二区三区四区在线看 | 国产手机在线αⅴ片无码观看 | 国内精品九九久久久精品 | 国产人妻精品一区二区三区不卡 | 亚洲国产欧美日韩精品一区二区三区 | 国产人妻精品一区二区三区不卡 | а√天堂www在线天堂小说 | 无码一区二区三区在线观看 | 欧美第一黄网免费网站 | 亚洲精品鲁一鲁一区二区三区 | 日韩人妻少妇一区二区三区 | yw尤物av无码国产在线观看 | 野狼第一精品社区 | 国内揄拍国内精品少妇国语 | 无码人妻精品一区二区三区不卡 | 久久久精品456亚洲影院 | 日本www一道久久久免费榴莲 | 国产亚洲精品精品国产亚洲综合 | 国产午夜亚洲精品不卡 | 少妇无套内谢久久久久 | 成人欧美一区二区三区黑人免费 | 牲欲强的熟妇农村老妇女视频 | 无套内谢老熟女 | 天天综合网天天综合色 | 毛片内射-百度 | 自拍偷自拍亚洲精品10p | 久久精品国产99久久6动漫 | 免费乱码人妻系列无码专区 | 亚洲高清偷拍一区二区三区 | 中文字幕人成乱码熟女app | 天天燥日日燥 | 最近中文2019字幕第二页 | 久久综合网欧美色妞网 | 性欧美videos高清精品 | 久久99精品国产麻豆蜜芽 | 中文精品久久久久人妻不卡 | 清纯唯美经典一区二区 | 国产人妖乱国产精品人妖 | 7777奇米四色成人眼影 | 狠狠色噜噜狠狠狠7777奇米 | 久久无码人妻影院 | 亚洲人成网站免费播放 | 日本爽爽爽爽爽爽在线观看免 | 国产另类ts人妖一区二区 | 东北女人啪啪对白 | 国产成人午夜福利在线播放 | 欧美freesex黑人又粗又大 | 三上悠亚人妻中文字幕在线 | 色综合久久久久综合一本到桃花网 | 免费观看又污又黄的网站 | 乱中年女人伦av三区 | 色欲久久久天天天综合网精品 | 亚洲乱码日产精品bd | 人妻尝试又大又粗久久 | 无码午夜成人1000部免费视频 | 性欧美熟妇videofreesex | 久久综合九色综合97网 | 荫蒂添的好舒服视频囗交 | 99久久人妻精品免费二区 | 国产亚洲tv在线观看 | 人人妻人人澡人人爽欧美精品 | 任你躁国产自任一区二区三区 | 99久久人妻精品免费一区 | 色综合天天综合狠狠爱 | 精品熟女少妇av免费观看 | 领导边摸边吃奶边做爽在线观看 | 亚洲一区二区三区国产精华液 | 成熟妇人a片免费看网站 | 装睡被陌生人摸出水好爽 | 成熟女人特级毛片www免费 | 又大又紧又粉嫩18p少妇 | 一个人看的视频www在线 | 精品人妻人人做人人爽夜夜爽 | 亚洲の无码国产の无码影院 | 丰满护士巨好爽好大乳 | 人妻插b视频一区二区三区 | 国产精品久久久一区二区三区 | 牲欲强的熟妇农村老妇女 | 亚洲欧美综合区丁香五月小说 | 久久精品成人欧美大片 | 一个人看的视频www在线 | 久久精品国产精品国产精品污 | 久久99精品久久久久久动态图 | 夜精品a片一区二区三区无码白浆 | 亚洲欧洲中文日韩av乱码 | 玩弄中年熟妇正在播放 | 国产香蕉尹人视频在线 | 无码成人精品区在线观看 | 久久人人爽人人爽人人片ⅴ | 欧洲vodafone精品性 | 全球成人中文在线 | 免费无码av一区二区 | 久久精品人人做人人综合 | 亚洲啪av永久无码精品放毛片 | 久久99精品久久久久久动态图 | 国色天香社区在线视频 | 久久这里只有精品视频9 | 丝袜人妻一区二区三区 | 精品偷自拍另类在线观看 | 人妻中文无码久热丝袜 | 东京热无码av男人的天堂 | 中文字幕无线码免费人妻 | 中文久久乱码一区二区 | 久久精品人人做人人综合 | a在线亚洲男人的天堂 | 亚洲欧美中文字幕5发布 | 午夜精品一区二区三区的区别 | 亚洲色偷偷偷综合网 | 日本大香伊一区二区三区 | 蜜臀aⅴ国产精品久久久国产老师 | 狠狠色丁香久久婷婷综合五月 | 国产欧美精品一区二区三区 | 乱人伦人妻中文字幕无码久久网 | 亚洲一区二区三区国产精华液 | 熟女少妇在线视频播放 | ass日本丰满熟妇pics | 伊人色综合久久天天小片 | 色综合天天综合狠狠爱 | 亚拍精品一区二区三区探花 | 成人试看120秒体验区 | 国产精品无码一区二区桃花视频 | 国产在线精品一区二区三区直播 | 国产亚洲精品久久久久久国模美 | 亚洲国产精品一区二区第一页 | 国产电影无码午夜在线播放 | 性色欲网站人妻丰满中文久久不卡 | 久久久久99精品国产片 | 精品国产一区二区三区四区在线看 | av无码久久久久不卡免费网站 | 免费国产成人高清在线观看网站 | 亚洲色偷偷男人的天堂 | 亚洲人成影院在线观看 | 成人综合网亚洲伊人 | 国产成人无码区免费内射一片色欲 | 狠狠色噜噜狠狠狠7777奇米 | 免费无码的av片在线观看 | 亚洲精品鲁一鲁一区二区三区 | 中文字幕人成乱码熟女app | 国产极品美女高潮无套在线观看 | 亚洲一区二区三区无码久久 | 波多野结衣高清一区二区三区 | 福利一区二区三区视频在线观看 | 水蜜桃亚洲一二三四在线 | 国产猛烈高潮尖叫视频免费 | 久久午夜无码鲁丝片午夜精品 | 亚洲一区二区三区偷拍女厕 | 国产乱人伦偷精品视频 | 麻豆国产人妻欲求不满 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 精品久久久无码中文字幕 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产高清av在线播放 | 亚洲国产成人av在线观看 | 久久久久人妻一区精品色欧美 | 最近免费中文字幕中文高清百度 | 欧美丰满熟妇xxxx性ppx人交 | 精品午夜福利在线观看 | 欧美人与牲动交xxxx | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 狠狠色噜噜狠狠狠7777奇米 | 午夜不卡av免费 一本久久a久久精品vr综合 | 日本熟妇人妻xxxxx人hd | 中文字幕人妻无码一夲道 | 无码中文字幕色专区 | 国产午夜亚洲精品不卡 | 四虎影视成人永久免费观看视频 | 欧美人与禽猛交狂配 | 亚洲一区二区三区偷拍女厕 | 天天综合网天天综合色 | 欧美午夜特黄aaaaaa片 | 久久精品视频在线看15 | 亚洲va中文字幕无码久久不卡 | 亚洲精品久久久久中文第一幕 | 日本xxxx色视频在线观看免费 | 麻豆果冻传媒2021精品传媒一区下载 | 伊人久久大香线蕉午夜 | 精品国产精品久久一区免费式 | 色婷婷久久一区二区三区麻豆 | 亚洲精品国产精品乱码视色 | 在线观看欧美一区二区三区 | 精品无码国产自产拍在线观看蜜 | 高潮毛片无遮挡高清免费 | 亚洲精品一区二区三区在线 | 婷婷六月久久综合丁香 | 一二三四在线观看免费视频 | 国产午夜无码视频在线观看 | av无码不卡在线观看免费 | 国产偷抇久久精品a片69 | 欧美国产亚洲日韩在线二区 | 伊人色综合久久天天小片 | 久久久久se色偷偷亚洲精品av | 丰满少妇熟乱xxxxx视频 | 国产精品毛片一区二区 | 亚洲欧洲日本综合aⅴ在线 | 青草青草久热国产精品 | 中文无码成人免费视频在线观看 | 国产小呦泬泬99精品 | 亚洲毛片av日韩av无码 | 精品国产一区av天美传媒 | 波多野结衣高清一区二区三区 | 日产精品99久久久久久 | 女高中生第一次破苞av | 九九在线中文字幕无码 | 无码毛片视频一区二区本码 | 国产人妻人伦精品1国产丝袜 | 无码国产乱人伦偷精品视频 | 国产精品无码一区二区桃花视频 | 亚洲成a人片在线观看无码3d | 色欲综合久久中文字幕网 | 国产精品嫩草久久久久 | 欧美激情综合亚洲一二区 | 亚拍精品一区二区三区探花 | 无码精品国产va在线观看dvd | 给我免费的视频在线观看 | 一本色道久久综合亚洲精品不卡 | 理论片87福利理论电影 | 国产精品美女久久久网av | 成熟妇人a片免费看网站 | 一本久道久久综合婷婷五月 | ass日本丰满熟妇pics | 鲁鲁鲁爽爽爽在线视频观看 | 老太婆性杂交欧美肥老太 | 免费中文字幕日韩欧美 | 欧美人与物videos另类 | 国产成人无码区免费内射一片色欲 | 久久久精品人妻久久影视 | 蜜桃视频插满18在线观看 | 成人欧美一区二区三区 | 国产精品手机免费 | 欧美日韩久久久精品a片 | 影音先锋中文字幕无码 | 扒开双腿疯狂进出爽爽爽视频 | 丰满诱人的人妻3 | 亚洲国产精品一区二区第一页 | 欧美精品无码一区二区三区 | 中文无码精品a∨在线观看不卡 | 久久精品中文闷骚内射 | 成人无码精品一区二区三区 | 亚洲国产精品一区二区第一页 | 亚洲乱码国产乱码精品精 | 一本无码人妻在中文字幕免费 | 欧美日韩一区二区三区自拍 | 少妇人妻偷人精品无码视频 | 午夜不卡av免费 一本久久a久久精品vr综合 | 久久zyz资源站无码中文动漫 | 成人欧美一区二区三区 | 全黄性性激高免费视频 | 国产亚洲精品久久久闺蜜 | 无码国模国产在线观看 | 领导边摸边吃奶边做爽在线观看 | 国语精品一区二区三区 | 中文字幕乱妇无码av在线 | 欧美成人免费全部网站 | √8天堂资源地址中文在线 | 少妇被黑人到高潮喷出白浆 | 久久 国产 尿 小便 嘘嘘 | 免费人成在线观看网站 | 啦啦啦www在线观看免费视频 | 欧美自拍另类欧美综合图片区 | 精品国偷自产在线视频 | 麻豆国产人妻欲求不满谁演的 | 国产做国产爱免费视频 | 日本丰满熟妇videos | 亚洲性无码av中文字幕 | 福利一区二区三区视频在线观看 | 人人爽人人澡人人人妻 | 久精品国产欧美亚洲色aⅴ大片 | 欧美日韩色另类综合 | 又大又硬又黄的免费视频 | 一个人看的视频www在线 | 国产成人久久精品流白浆 | 极品尤物被啪到呻吟喷水 | 亚洲成a人片在线观看无码 | 国产精品va在线播放 | 综合激情五月综合激情五月激情1 | 一本大道久久东京热无码av | av在线亚洲欧洲日产一区二区 | 大肉大捧一进一出视频出来呀 | 国产高清不卡无码视频 | 国产人成高清在线视频99最全资源 | 99国产欧美久久久精品 | 久久精品国产一区二区三区 | 久久久精品欧美一区二区免费 | 宝宝好涨水快流出来免费视频 | 亚洲精品成人av在线 | 久久久久99精品国产片 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 综合激情五月综合激情五月激情1 | 亚洲精品欧美二区三区中文字幕 | 97人妻精品一区二区三区 | 日本一区二区更新不卡 | 综合人妻久久一区二区精品 | 窝窝午夜理论片影院 | 少妇高潮喷潮久久久影院 | 亚洲熟悉妇女xxx妇女av | 久久熟妇人妻午夜寂寞影院 | 国产av无码专区亚洲awww | 性欧美疯狂xxxxbbbb | 亚洲男人av天堂午夜在 | 亚洲精品一区二区三区四区五区 | 亚洲性无码av中文字幕 | 亚洲日韩中文字幕在线播放 | 丝袜 中出 制服 人妻 美腿 | 300部国产真实乱 | 性生交大片免费看女人按摩摩 | 精品亚洲韩国一区二区三区 | 日本丰满护士爆乳xxxx | 中文字幕无码免费久久99 | 亚洲欧美日韩综合久久久 | 欧美xxxx黑人又粗又长 | 国产热a欧美热a在线视频 | 国产色视频一区二区三区 | 欧美猛少妇色xxxxx | 97精品国产97久久久久久免费 | 成人精品一区二区三区中文字幕 | 亚洲第一网站男人都懂 | 丰满人妻翻云覆雨呻吟视频 | 无码人妻少妇伦在线电影 | 久久精品视频在线看15 | 97久久国产亚洲精品超碰热 | 我要看www免费看插插视频 | 日本xxxx色视频在线观看免费 | 国产精品va在线观看无码 | 丰满妇女强制高潮18xxxx | 两性色午夜视频免费播放 | 国产办公室秘书无码精品99 | 国产极品视觉盛宴 | 天下第一社区视频www日本 | 狠狠色丁香久久婷婷综合五月 | 无码乱肉视频免费大全合集 | 帮老师解开蕾丝奶罩吸乳网站 | 99久久久国产精品无码免费 | 国产精品人人爽人人做我的可爱 | 国产午夜福利100集发布 | 国内精品一区二区三区不卡 | 国产成人无码av片在线观看不卡 | 亚洲性无码av中文字幕 | 红桃av一区二区三区在线无码av | 国产精品久久久久7777 | 牲欲强的熟妇农村老妇女视频 | 免费男性肉肉影院 | 国产成人精品必看 | 国产精品理论片在线观看 | 亚洲国产成人av在线观看 | 东京一本一道一二三区 | 人人妻人人澡人人爽人人精品浪潮 | 成人av无码一区二区三区 | www国产亚洲精品久久久日本 | 国产人妻久久精品二区三区老狼 | 亚洲熟妇色xxxxx亚洲 | 永久免费精品精品永久-夜色 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产色视频一区二区三区 | 国产亚洲视频中文字幕97精品 | 国产又爽又黄又刺激的视频 | 999久久久国产精品消防器材 | 色综合久久久无码网中文 | 精品熟女少妇av免费观看 | 国产精品久久久久影院嫩草 | 亚洲日韩精品欧美一区二区 | 强奷人妻日本中文字幕 | 国产农村妇女高潮大叫 | 欧洲欧美人成视频在线 | 国产农村妇女高潮大叫 | 午夜精品久久久久久久 | 狂野欧美性猛交免费视频 | 久久国语露脸国产精品电影 | 国产两女互慰高潮视频在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 狠狠躁日日躁夜夜躁2020 | 国产成人无码av片在线观看不卡 | 成人亚洲精品久久久久软件 | 国产成人无码区免费内射一片色欲 | 国产人妻精品一区二区三区 | 国产午夜精品一区二区三区嫩草 | 亚洲经典千人经典日产 | 东京热男人av天堂 | 国产精品亚洲专区无码不卡 | 国产激情无码一区二区 | 国产后入清纯学生妹 | 国产激情一区二区三区 | 天天拍夜夜添久久精品 | 国产精品久久久久无码av色戒 | 狠狠色欧美亚洲狠狠色www | 久9re热视频这里只有精品 | 亚洲综合另类小说色区 | 天海翼激烈高潮到腰振不止 | 欧美性黑人极品hd | 亚洲国产精品久久人人爱 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲欧美日韩国产精品一区二区 | 国产 精品 自在自线 | 中文字幕无码视频专区 | 国产精品永久免费视频 | 无遮无挡爽爽免费视频 | 精品熟女少妇av免费观看 | 亚洲精品一区二区三区四区五区 | 一二三四在线观看免费视频 | 国产成人无码一二三区视频 | 国产人妻人伦精品1国产丝袜 | 国产网红无码精品视频 | 精品无码一区二区三区爱欲 | 蜜臀av无码人妻精品 | a国产一区二区免费入口 | 亚洲欧美精品aaaaaa片 | 亚洲 a v无 码免 费 成 人 a v | 亚洲国产欧美日韩精品一区二区三区 | 狠狠亚洲超碰狼人久久 | 熟女少妇在线视频播放 | 97精品人妻一区二区三区香蕉 | 清纯唯美经典一区二区 | 精品国偷自产在线 | 在线亚洲高清揄拍自拍一品区 | 成人精品天堂一区二区三区 | 丰满人妻翻云覆雨呻吟视频 | a国产一区二区免费入口 | 黑森林福利视频导航 | 亚洲中文字幕av在天堂 | 国内精品久久毛片一区二区 | 国产亚洲精品精品国产亚洲综合 | 男人的天堂av网站 | 日本乱人伦片中文三区 | 国产午夜手机精彩视频 | 国产午夜无码精品免费看 | 久久综合久久自在自线精品自 | 精品欧美一区二区三区久久久 | 少妇的肉体aa片免费 | 国产亚洲欧美日韩亚洲中文色 | 国产亚洲精品久久久久久 | 亚洲 欧美 激情 小说 另类 | 99久久久国产精品无码免费 | 国产熟妇另类久久久久 | 国产免费观看黄av片 | 又大又硬又爽免费视频 | 97se亚洲精品一区 | 永久黄网站色视频免费直播 | 97夜夜澡人人双人人人喊 | 夜精品a片一区二区三区无码白浆 | 伊人久久大香线蕉av一区二区 | 欧美 丝袜 自拍 制服 另类 | 丰满少妇高潮惨叫视频 | 日日夜夜撸啊撸 | 国产在热线精品视频 | 55夜色66夜色国产精品视频 | 水蜜桃色314在线观看 | 日韩av无码中文无码电影 | 婷婷丁香五月天综合东京热 | 欧美自拍另类欧美综合图片区 | 亚洲综合精品香蕉久久网 | 永久免费观看国产裸体美女 | 老熟妇乱子伦牲交视频 | 乱人伦中文视频在线观看 | 成人精品视频一区二区三区尤物 | 亚洲熟妇自偷自拍另类 | 131美女爱做视频 | 成人欧美一区二区三区黑人 | 欧美变态另类xxxx | 久久99精品久久久久久动态图 | 又大又黄又粗又爽的免费视频 | 一本无码人妻在中文字幕免费 | 国产av无码专区亚洲awww | 97精品国产97久久久久久免费 | 亚洲精品一区三区三区在线观看 | 久久国产精品萌白酱免费 | 黑人玩弄人妻中文在线 | 国产精品二区一区二区aⅴ污介绍 | 亚洲另类伦春色综合小说 | 亚洲第一网站男人都懂 | 国产亚洲人成在线播放 | 亚洲综合无码一区二区三区 | 亚洲日韩av一区二区三区四区 | 好男人www社区 | 日韩少妇内射免费播放 | 成在人线av无码免观看麻豆 | 熟女少妇在线视频播放 | 一本色道婷婷久久欧美 | 精品 日韩 国产 欧美 视频 | 天堂无码人妻精品一区二区三区 | 澳门永久av免费网站 | 亚洲人成人无码网www国产 | 99麻豆久久久国产精品免费 | 成熟人妻av无码专区 | 精品无人国产偷自产在线 | 国产精品亚洲综合色区韩国 | 欧美亚洲国产一区二区三区 | 国产精品久久久久9999小说 | 日本熟妇人妻xxxxx人hd | 色狠狠av一区二区三区 | 欧洲熟妇色 欧美 | 亚洲国产一区二区三区在线观看 | 老熟妇仑乱视频一区二区 | 97夜夜澡人人双人人人喊 | 国产国语老龄妇女a片 | 骚片av蜜桃精品一区 | 一本久久伊人热热精品中文字幕 | 国产一区二区不卡老阿姨 | 欧美丰满少妇xxxx性 | 无码人妻丰满熟妇区五十路百度 | 国产午夜亚洲精品不卡 | 国产成人人人97超碰超爽8 | 99久久精品日本一区二区免费 | 荫蒂被男人添的好舒服爽免费视频 | 无码中文字幕色专区 | 日韩精品成人一区二区三区 | 国产成人无码av片在线观看不卡 | 国产婷婷色一区二区三区在线 | 亚洲经典千人经典日产 | 亚洲人成影院在线观看 | 大胆欧美熟妇xx | 婷婷五月综合缴情在线视频 | 欧美人与禽zoz0性伦交 | 中文字幕亚洲情99在线 | 无套内射视频囯产 | 精品国产国产综合精品 | 亚洲精品成人av在线 | 99er热精品视频 | 在线a亚洲视频播放在线观看 | 香蕉久久久久久av成人 | 无码国产色欲xxxxx视频 | 亚洲熟妇色xxxxx亚洲 | 最近中文2019字幕第二页 | 一本久道久久综合婷婷五月 | 国产激情艳情在线看视频 | 人妻无码久久精品人妻 | 午夜男女很黄的视频 | 日本va欧美va欧美va精品 | 天天av天天av天天透 | 亚洲另类伦春色综合小说 | 一本久久a久久精品亚洲 | 一个人看的www免费视频在线观看 | 久久亚洲中文字幕无码 | 亚洲精品一区二区三区在线观看 | 免费无码的av片在线观看 | 丝袜美腿亚洲一区二区 | 欧美日韩在线亚洲综合国产人 | 久久视频在线观看精品 | 亚洲第一网站男人都懂 | 久久精品人人做人人综合试看 | 日日天日日夜日日摸 | 午夜时刻免费入口 | 一本色道婷婷久久欧美 | 性生交大片免费看女人按摩摩 | 99久久久国产精品无码免费 | 日产精品高潮呻吟av久久 | 无码精品国产va在线观看dvd | √天堂中文官网8在线 | 人人妻在人人 | 国产美女极度色诱视频www | www成人国产高清内射 | 亚洲人成人无码网www国产 | 久久精品视频在线看15 | 真人与拘做受免费视频一 | 高清国产亚洲精品自在久久 | 国产国产精品人在线视 | 小鲜肉自慰网站xnxx | 日韩人妻少妇一区二区三区 | 黑人巨大精品欧美黑寡妇 | 婷婷五月综合激情中文字幕 | 图片小说视频一区二区 | 成人av无码一区二区三区 | 久久久国产精品无码免费专区 | 亚洲乱亚洲乱妇50p | 国产成人无码专区 | 亚洲色大成网站www国产 | 国产一区二区三区影院 | 丰满人妻被黑人猛烈进入 | 国产一区二区三区日韩精品 | 在线精品亚洲一区二区 | 男人和女人高潮免费网站 | 97精品人妻一区二区三区香蕉 | 国产欧美熟妇另类久久久 | 国产亚洲精品久久久闺蜜 | 久热国产vs视频在线观看 | 日本大香伊一区二区三区 | 亚洲乱亚洲乱妇50p | 国语自产偷拍精品视频偷 | 国产精品人妻一区二区三区四 | 国内精品久久久久久中文字幕 | 伊人色综合久久天天小片 | 性生交大片免费看l | 特黄特色大片免费播放器图片 | 国产无遮挡又黄又爽又色 | 狠狠躁日日躁夜夜躁2020 | 成人aaa片一区国产精品 | 国产卡一卡二卡三 | 性生交大片免费看l | 啦啦啦www在线观看免费视频 | 狂野欧美性猛xxxx乱大交 | 无码人妻少妇伦在线电影 | 黑人粗大猛烈进出高潮视频 | 亚洲色欲色欲欲www在线 | 亚洲一区av无码专区在线观看 | 国内精品一区二区三区不卡 | 欧美性猛交xxxx富婆 | 国产精品美女久久久久av爽李琼 | 色综合久久久无码网中文 | 欧美xxxxx精品 | 中文字幕av伊人av无码av | 日韩av无码一区二区三区不卡 | 久久久久久久女国产乱让韩 | 亚洲人成网站免费播放 | 免费无码午夜福利片69 | 日欧一片内射va在线影院 | 久久久久99精品国产片 | 一本一道久久综合久久 | 国产在线无码精品电影网 | √天堂中文官网8在线 | 亚洲精品一区三区三区在线观看 | 色一情一乱一伦一区二区三欧美 | 成人性做爰aaa片免费看 | 久久久无码中文字幕久... | 欧美一区二区三区 | 亚洲 日韩 欧美 成人 在线观看 | 午夜成人1000部免费视频 | 99久久久国产精品无码免费 | 激情综合激情五月俺也去 | 日韩精品a片一区二区三区妖精 | 曰韩少妇内射免费播放 | 日本大香伊一区二区三区 | 中文字幕精品av一区二区五区 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲精品鲁一鲁一区二区三区 | 麻豆国产97在线 | 欧洲 | 欧美freesex黑人又粗又大 | 亚洲成熟女人毛毛耸耸多 | 国产婷婷色一区二区三区在线 | 色婷婷综合激情综在线播放 | 国产两女互慰高潮视频在线观看 | 国产精品多人p群无码 | 丰满少妇人妻久久久久久 | 日韩在线不卡免费视频一区 | 精品一区二区不卡无码av | 人人超人人超碰超国产 | 麻豆国产人妻欲求不满谁演的 | 丰满人妻被黑人猛烈进入 | 中文字幕人妻无码一区二区三区 | 国产av久久久久精东av | 亚洲一区二区观看播放 | 99久久精品国产一区二区蜜芽 | 人妻无码久久精品人妻 | 强开小婷嫩苞又嫩又紧视频 | 99精品视频在线观看免费 | 最新国产麻豆aⅴ精品无码 | 久久久久成人精品免费播放动漫 | 亚洲欧美国产精品久久 | 在教室伦流澡到高潮hnp视频 | 欧美熟妇另类久久久久久不卡 | 少妇厨房愉情理9仑片视频 | 最新版天堂资源中文官网 | 久久精品国产精品国产精品污 | 一本色道久久综合亚洲精品不卡 | 精品欧洲av无码一区二区三区 | 51国偷自产一区二区三区 | 亚洲精品国偷拍自产在线麻豆 | 九月婷婷人人澡人人添人人爽 | 国产人成高清在线视频99最全资源 | 国产亚洲精品久久久久久大师 | 18禁止看的免费污网站 | 亚洲国产成人av在线观看 | 网友自拍区视频精品 | 撕开奶罩揉吮奶头视频 | 国产激情艳情在线看视频 | 亚洲精品久久久久中文第一幕 | 久久精品国产一区二区三区肥胖 | 国产一区二区三区日韩精品 | 樱花草在线社区www | 天天躁日日躁狠狠躁免费麻豆 | 国产超碰人人爽人人做人人添 | 色婷婷av一区二区三区之红樱桃 | 久久国产自偷自偷免费一区调 | 麻豆国产人妻欲求不满谁演的 | 在线а√天堂中文官网 | 国产人妻人伦精品1国产丝袜 | 国产明星裸体无码xxxx视频 | 人人妻人人澡人人爽人人精品浪潮 | 99久久人妻精品免费一区 | 丰满少妇女裸体bbw | 偷窥日本少妇撒尿chinese | 国产精品人人爽人人做我的可爱 | 日本乱偷人妻中文字幕 | 少妇性l交大片 | 黑人粗大猛烈进出高潮视频 | 国产九九九九九九九a片 | 大地资源网第二页免费观看 | 自拍偷自拍亚洲精品10p | 欧美黑人性暴力猛交喷水 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 成年美女黄网站色大免费视频 | 精品久久久久久人妻无码中文字幕 | 天天拍夜夜添久久精品 | 亚洲小说图区综合在线 | 熟女体下毛毛黑森林 | 扒开双腿吃奶呻吟做受视频 | 国产精品人人妻人人爽 | 岛国片人妻三上悠亚 | 色情久久久av熟女人妻网站 | 熟女体下毛毛黑森林 | 久久综合激激的五月天 | 熟女俱乐部五十路六十路av | 成人精品一区二区三区中文字幕 | 亚洲精品一区二区三区在线观看 | 无码人妻精品一区二区三区不卡 | 午夜精品一区二区三区的区别 | 亚洲区小说区激情区图片区 | 日本www一道久久久免费榴莲 | 麻豆成人精品国产免费 | 亚洲综合久久一区二区 | 美女极度色诱视频国产 | 日本精品人妻无码免费大全 | 日本精品高清一区二区 | 中文字幕久久久久人妻 | 乌克兰少妇xxxx做受 | 国产无av码在线观看 | 97se亚洲精品一区 | 97久久国产亚洲精品超碰热 | 欧美怡红院免费全部视频 | 任你躁国产自任一区二区三区 | av无码不卡在线观看免费 | 久久人人爽人人爽人人片av高清 | 久久综合九色综合欧美狠狠 | 日本又色又爽又黄的a片18禁 | 国产精品毛片一区二区 | 宝宝好涨水快流出来免费视频 | 色一情一乱一伦 | 精品欧美一区二区三区久久久 | 亚洲综合无码久久精品综合 | 国产无遮挡又黄又爽免费视频 | 国产精品久久久 | 久久精品人人做人人综合 | 久久精品女人天堂av免费观看 | 国产免费无码一区二区视频 | 丝袜美腿亚洲一区二区 | 欧美国产亚洲日韩在线二区 | 99精品无人区乱码1区2区3区 | 97夜夜澡人人双人人人喊 | 成在人线av无码免观看麻豆 | 国产激情综合五月久久 | 亚洲日韩av一区二区三区四区 | 亚洲国产精品一区二区美利坚 | 国内精品久久久久久中文字幕 | 亚洲七七久久桃花影院 | 免费视频欧美无人区码 | 久久国语露脸国产精品电影 | 一本色道久久综合狠狠躁 | 又粗又大又硬毛片免费看 | 亚洲最大成人网站 | 人人妻人人澡人人爽人人精品浪潮 | 99精品无人区乱码1区2区3区 | 亚洲成av人综合在线观看 | 久久久无码中文字幕久... | 又色又爽又黄的美女裸体网站 | 国产人成高清在线视频99最全资源 | 日韩欧美中文字幕在线三区 | 亚洲理论电影在线观看 | 日本精品人妻无码免费大全 | 亚洲七七久久桃花影院 | 亚洲gv猛男gv无码男同 | 国产日产欧产精品精品app | 国产真人无遮挡作爱免费视频 | 六月丁香婷婷色狠狠久久 | 无套内谢的新婚少妇国语播放 | 欧美 亚洲 国产 另类 | 婷婷丁香六月激情综合啪 | 性色欲网站人妻丰满中文久久不卡 | 精品久久综合1区2区3区激情 | 国产精品多人p群无码 | 国产精品久久久午夜夜伦鲁鲁 | 久久亚洲中文字幕精品一区 | 国产麻豆精品一区二区三区v视界 | 久久 国产 尿 小便 嘘嘘 | 扒开双腿吃奶呻吟做受视频 | 帮老师解开蕾丝奶罩吸乳网站 | 131美女爱做视频 | 欧美丰满老熟妇xxxxx性 | 无码免费一区二区三区 | 国产成人亚洲综合无码 | 蜜桃臀无码内射一区二区三区 | 又色又爽又黄的美女裸体网站 | 国产又粗又硬又大爽黄老大爷视 | 初尝人妻少妇中文字幕 | 欧美人与禽猛交狂配 | 日韩欧美群交p片內射中文 | 精品国产一区av天美传媒 | 国产精品久久久久9999小说 | 日本欧美一区二区三区乱码 | 一区二区三区乱码在线 | 欧洲 | 亚洲一区二区三区含羞草 | 无码帝国www无码专区色综合 | 午夜男女很黄的视频 | 色一情一乱一伦一视频免费看 | 无码福利日韩神码福利片 | 伊人久久大香线焦av综合影院 | 久久精品国产日本波多野结衣 | 亚洲日本va中文字幕 | 亚洲国产日韩a在线播放 | 精品国产av色一区二区深夜久久 | 久久国产精品精品国产色婷婷 | 99re在线播放 | 欧美丰满熟妇xxxx | 成人精品视频一区二区三区尤物 | 亚洲成a人片在线观看日本 | 亚洲精品无码人妻无码 | 日本精品人妻无码77777 天堂一区人妻无码 | 丁香花在线影院观看在线播放 | 国产精品毛片一区二区 | 一本色道久久综合亚洲精品不卡 | 夜夜夜高潮夜夜爽夜夜爰爰 | 午夜福利一区二区三区在线观看 | 人人妻人人藻人人爽欧美一区 | 久久国产精品萌白酱免费 | 成 人 免费观看网站 | 久久精品国产日本波多野结衣 | 夜夜影院未满十八勿进 | 亚洲国产精品久久久久久 | 性色av无码免费一区二区三区 | 日本又色又爽又黄的a片18禁 | yw尤物av无码国产在线观看 | 激情亚洲一区国产精品 | 撕开奶罩揉吮奶头视频 | 97久久国产亚洲精品超碰热 | 色窝窝无码一区二区三区色欲 | 亚洲日本va午夜在线电影 | 日韩人妻系列无码专区 | 欧美熟妇另类久久久久久多毛 | 久久国产精品精品国产色婷婷 | 国产精品理论片在线观看 | 亚洲精品鲁一鲁一区二区三区 | 欧美日本精品一区二区三区 | 亚洲国产精品毛片av不卡在线 | 欧美成人午夜精品久久久 | 亚洲无人区一区二区三区 | 亚洲精品一区二区三区大桥未久 | 丰满人妻一区二区三区免费视频 | 97色伦图片97综合影院 | 亚洲色成人中文字幕网站 | 日韩亚洲欧美中文高清在线 | 亚洲无人区一区二区三区 | 天海翼激烈高潮到腰振不止 | 青青青爽视频在线观看 | 亚洲国产精品久久久久久 | 麻豆国产97在线 | 欧洲 | 丰满少妇女裸体bbw | 精品亚洲成av人在线观看 | 青草视频在线播放 | 国产精品久久久久9999小说 | 国产精品久久久久久亚洲毛片 | 亚洲精品久久久久久久久久久 | 好男人www社区 | 人妻少妇被猛烈进入中文字幕 | 中文精品久久久久人妻不卡 | 中文字幕无码乱人伦 | 中文字幕无码免费久久99 | 欧美日本免费一区二区三区 | 国产精品va在线观看无码 | 澳门永久av免费网站 | 国产色xx群视频射精 | 久久午夜无码鲁丝片午夜精品 | 国产又粗又硬又大爽黄老大爷视 | 99国产精品白浆在线观看免费 | 亚洲综合伊人久久大杳蕉 | 乌克兰少妇xxxx做受 | 无码国内精品人妻少妇 | 香港三级日本三级妇三级 | 少妇被粗大的猛进出69影院 | 久久亚洲国产成人精品性色 | 亚洲成av人综合在线观看 | 久久久精品456亚洲影院 | 人妻无码久久精品人妻 | 国产高清不卡无码视频 | 成人性做爰aaa片免费看 | 妺妺窝人体色www婷婷 | 亚洲精品一区国产 | 55夜色66夜色国产精品视频 | 亚洲精品一区二区三区在线 | 精品久久久久久人妻无码中文字幕 | 日本精品人妻无码免费大全 | 久久综合网欧美色妞网 | 国产精品多人p群无码 | 中文久久乱码一区二区 | 国产亚洲人成在线播放 | 国产成人精品一区二区在线小狼 | 无码国模国产在线观看 | 国产精品va在线观看无码 | 久久精品成人欧美大片 | 在线欧美精品一区二区三区 | 日本乱人伦片中文三区 | 国产在线aaa片一区二区99 | 牛和人交xxxx欧美 | 日韩av无码一区二区三区 | 狠狠色噜噜狠狠狠7777奇米 | 精品久久久无码中文字幕 | 亚洲成av人影院在线观看 | 97无码免费人妻超级碰碰夜夜 | 久久久亚洲欧洲日产国码αv | 精品国产aⅴ无码一区二区 | 色综合视频一区二区三区 | 黑人巨大精品欧美一区二区 | 高清国产亚洲精品自在久久 | 丁香啪啪综合成人亚洲 | 中文字幕亚洲情99在线 | 久久国内精品自在自线 | 国产午夜亚洲精品不卡下载 | 久久久久99精品成人片 | 老头边吃奶边弄进去呻吟 | 牲欲强的熟妇农村老妇女 | 少妇性俱乐部纵欲狂欢电影 | 日韩精品久久久肉伦网站 | 97久久国产亚洲精品超碰热 | 国产成人人人97超碰超爽8 | 亚洲国产精品一区二区第一页 | 18禁黄网站男男禁片免费观看 | 人人妻人人澡人人爽欧美一区九九 | 澳门永久av免费网站 | 国产乱人伦偷精品视频 | 国产无av码在线观看 | 国产成人无码av片在线观看不卡 | 欧美老妇交乱视频在线观看 | 久久久久人妻一区精品色欧美 | 精品成人av一区二区三区 | 正在播放东北夫妻内射 | 俺去俺来也在线www色官网 | 欧美乱妇无乱码大黄a片 | 性欧美牲交在线视频 | 秋霞成人午夜鲁丝一区二区三区 | 日韩av无码一区二区三区 | 麻豆国产97在线 | 欧洲 | 成人欧美一区二区三区黑人免费 | 亚洲人成无码网www | 人妻与老人中文字幕 | 天堂а√在线地址中文在线 | 欧美人与牲动交xxxx | 亚洲国产精品无码久久久久高潮 | 国产另类ts人妖一区二区 | 波多野结衣一区二区三区av免费 | 国产激情一区二区三区 | 国产午夜福利100集发布 | 欧美日韩综合一区二区三区 | 国产日产欧产精品精品app | 人妻人人添人妻人人爱 | 国产激情综合五月久久 | 3d动漫精品啪啪一区二区中 | 亚洲国产日韩a在线播放 | 毛片内射-百度 | 波多野结衣乳巨码无在线观看 | 国产精品亚洲а∨无码播放麻豆 | 精品偷自拍另类在线观看 | 国产精品欧美成人 | 人人妻人人澡人人爽精品欧美 | 久久99精品国产麻豆 | 亚洲精品一区三区三区在线观看 | 国产乡下妇女做爰 | 大肉大捧一进一出视频出来呀 | 亚洲日韩一区二区 | а√天堂www在线天堂小说 | 亚洲色欲久久久综合网东京热 | 国产肉丝袜在线观看 | 亚洲大尺度无码无码专区 | 欧美国产亚洲日韩在线二区 | 日欧一片内射va在线影院 | 国产高清av在线播放 | 性色av无码免费一区二区三区 | 日本免费一区二区三区最新 | 国产成人无码一二三区视频 | 国产xxx69麻豆国语对白 | 欧美zoozzooz性欧美 | 亚洲熟妇自偷自拍另类 | 亚洲中文字幕在线无码一区二区 | 无码免费一区二区三区 | 波多野42部无码喷潮在线 | 97夜夜澡人人双人人人喊 | 清纯唯美经典一区二区 | 中文字幕日韩精品一区二区三区 | 国产无套内射久久久国产 | 中文精品无码中文字幕无码专区 | 国产精品香蕉在线观看 | 人妻无码αv中文字幕久久琪琪布 | 成人欧美一区二区三区黑人 | 欧美老熟妇乱xxxxx | 白嫩日本少妇做爰 | 欧美日韩色另类综合 | 麻豆蜜桃av蜜臀av色欲av | 国产精品亚洲а∨无码播放麻豆 | 成人女人看片免费视频放人 | 国内精品人妻无码久久久影院 | 欧美35页视频在线观看 | 久久精品国产99精品亚洲 | 国精品人妻无码一区二区三区蜜柚 | 国内精品一区二区三区不卡 | 内射老妇bbwx0c0ck | 亚洲区小说区激情区图片区 | 无码午夜成人1000部免费视频 | 欧美高清在线精品一区 | 精品 日韩 国产 欧美 视频 | 国产精品怡红院永久免费 | 亚洲中文无码av永久不收费 | 国产成人人人97超碰超爽8 | 久久精品丝袜高跟鞋 | 无码吃奶揉捏奶头高潮视频 | 色诱久久久久综合网ywww | 国产日产欧产精品精品app | 黑人巨大精品欧美黑寡妇 | 亚洲日韩av一区二区三区中文 | 丝袜人妻一区二区三区 | 国产亚av手机在线观看 | 国产精品办公室沙发 | 日韩成人一区二区三区在线观看 | yw尤物av无码国产在线观看 | 国产精品久久久久久久影院 | 亚洲精品国偷拍自产在线观看蜜桃 | 波多野结衣乳巨码无在线观看 | 国産精品久久久久久久 | 日韩精品a片一区二区三区妖精 | 55夜色66夜色国产精品视频 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产精品亚洲а∨无码播放麻豆 | 免费人成在线视频无码 | 精品乱子伦一区二区三区 | 麻豆国产人妻欲求不满谁演的 | 亚洲日韩av一区二区三区四区 | 欧美freesex黑人又粗又大 | 无码毛片视频一区二区本码 | 成人片黄网站色大片免费观看 | 国内少妇偷人精品视频 | 在线播放免费人成毛片乱码 | 亚洲色欲久久久综合网东京热 | 亚洲午夜福利在线观看 | 久久人人爽人人爽人人片av高清 | 国产精品无码永久免费888 | 76少妇精品导航 | 网友自拍区视频精品 | 一区二区三区高清视频一 | 日本精品高清一区二区 | 国产真实伦对白全集 | 欧美freesex黑人又粗又大 | 亚洲区欧美区综合区自拍区 | 国产乱子伦视频在线播放 | 樱花草在线播放免费中文 | 亚洲另类伦春色综合小说 | 波多野结衣 黑人 | 亚洲中文字幕无码中字 | 永久免费观看美女裸体的网站 | 国产麻豆精品精东影业av网站 | 亚洲啪av永久无码精品放毛片 | 少妇性l交大片欧洲热妇乱xxx | 国产精品亚洲а∨无码播放麻豆 | av香港经典三级级 在线 | 天堂亚洲免费视频 | 一本一道久久综合久久 | 在线亚洲高清揄拍自拍一品区 | 欧美熟妇另类久久久久久不卡 | 四虎4hu永久免费 | 国产av无码专区亚洲a∨毛片 | 国产成人无码av在线影院 | 久久久无码中文字幕久... | 99国产欧美久久久精品 | 国产成人综合色在线观看网站 | av香港经典三级级 在线 | 国产三级久久久精品麻豆三级 | 久激情内射婷内射蜜桃人妖 | 伊人久久婷婷五月综合97色 | 成年美女黄网站色大免费全看 | 娇妻被黑人粗大高潮白浆 | 男人的天堂2018无码 | 熟妇人妻无乱码中文字幕 | 又粗又大又硬又长又爽 | 狠狠色噜噜狠狠狠狠7777米奇 | 一本加勒比波多野结衣 | 国产成人综合美国十次 | 国产成人无码午夜视频在线观看 | 国产偷国产偷精品高清尤物 | 性色av无码免费一区二区三区 | 97se亚洲精品一区 | 亚洲国产精品久久人人爱 | 久久综合网欧美色妞网 | 日本熟妇大屁股人妻 | 免费乱码人妻系列无码专区 | 色一情一乱一伦一区二区三欧美 | 无码免费一区二区三区 | 日本在线高清不卡免费播放 | 中文字幕av无码一区二区三区电影 | 一本精品99久久精品77 | 久久久久久国产精品无码下载 | 夜夜躁日日躁狠狠久久av | 国精产品一区二区三区 | 成 人影片 免费观看 | 亚洲熟妇自偷自拍另类 | 午夜免费福利小电影 | 国产成人午夜福利在线播放 | 未满小14洗澡无码视频网站 | 人人爽人人澡人人人妻 | 国产后入清纯学生妹 | 成熟妇人a片免费看网站 | 色五月五月丁香亚洲综合网 | 久久天天躁夜夜躁狠狠 | www国产亚洲精品久久久日本 | 好爽又高潮了毛片免费下载 | 国产麻豆精品一区二区三区v视界 | 国产人妻人伦精品1国产丝袜 | 欧美黑人巨大xxxxx | 国产精品嫩草久久久久 | 日产精品99久久久久久 | 性史性农村dvd毛片 | 国精产品一品二品国精品69xx | 人人澡人人妻人人爽人人蜜桃 | 国内精品久久久久久中文字幕 | 久久99精品国产麻豆蜜芽 | 日本护士xxxxhd少妇 | 精品无码成人片一区二区98 | 久久99久久99精品中文字幕 | 亚洲色www成人永久网址 | 国产区女主播在线观看 | 狠狠cao日日穞夜夜穞av | 又色又爽又黄的美女裸体网站 | 无码福利日韩神码福利片 | 国产av一区二区精品久久凹凸 | 人妻尝试又大又粗久久 | 无遮无挡爽爽免费视频 | 日本www一道久久久免费榴莲 | 欧美 亚洲 国产 另类 | 99久久亚洲精品无码毛片 | 免费人成网站视频在线观看 | 亚洲中文字幕av在天堂 | 日本一卡2卡3卡四卡精品网站 | 娇妻被黑人粗大高潮白浆 | 亚洲色大成网站www | av小次郎收藏 | 永久免费观看美女裸体的网站 | 日日麻批免费40分钟无码 | 久久久久av无码免费网 | 成人女人看片免费视频放人 | 久久99精品久久久久婷婷 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 一本色道久久综合狠狠躁 | 天堂久久天堂av色综合 | 精品亚洲成av人在线观看 | 人妻插b视频一区二区三区 | 女人被爽到呻吟gif动态图视看 | 白嫩日本少妇做爰 | 亚洲成a人片在线观看无码3d | 欧美午夜特黄aaaaaa片 | 午夜福利不卡在线视频 | 国产成人无码区免费内射一片色欲 | 国产人妻人伦精品1国产丝袜 | 成人无码精品1区2区3区免费看 | 十八禁真人啪啪免费网站 | 亚洲精品国产品国语在线观看 | 综合激情五月综合激情五月激情1 | 性色欲情网站iwww九文堂 | 我要看www免费看插插视频 | 亚洲另类伦春色综合小说 | 精品日本一区二区三区在线观看 | 国产成人无码午夜视频在线观看 | 中文字幕av日韩精品一区二区 | 色欲综合久久中文字幕网 | 久久无码人妻影院 | 亚洲人成人无码网www国产 | 精品国产aⅴ无码一区二区 | 熟女俱乐部五十路六十路av | 人人妻人人澡人人爽人人精品浪潮 | 又色又爽又黄的美女裸体网站 | 九九久久精品国产免费看小说 | 国产成人无码av一区二区 | 久久国产自偷自偷免费一区调 | 3d动漫精品啪啪一区二区中 | 搡女人真爽免费视频大全 | 亚洲精品国产品国语在线观看 | 黑森林福利视频导航 | 男女作爱免费网站 | 无码一区二区三区在线 | 波多野结衣av一区二区全免费观看 |