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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx源码分析之变量

發(fā)布時間:2024/2/28 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx源码分析之变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nginx中的變量在nginx中的使用非常的多,正因為變量的存在,使得nginx在配置上變得非常靈活。

我們知道,在nginx的配置文件中,配合變量,我們可以動態(tài)的得到我們想要的值。最常見的使用是,我們在寫access_log的格式時,需要用到多很多變量。 而這些變量是如何工作的呢?我們可以輸出哪些變量?我們又怎么才能輸出自己想要的內容呢?當然,我們可能還想知道,如何在我們的模塊里面去使用變量,如何添加變量,獲取變量的值,以及設置變量的內容?如何使用,以及需要注意些什么?

問題一大堆,那接下來,就讓我們一起去一探nginx源碼的秘密。

我要講的內容

  • 變量的分類
  • 相關結構
  • 模塊中操作變量的函數
  • 變量的實現源碼及流程
  • 1. 變量的分類

    站在使用者的角度來看,我們在配置文件中可以看到:

  • set添加的變量(變量名由用戶設定)
  • nginx功能模塊中添加的變量,如geo模塊(變量名由用戶設定)
  • nginx內建的變量(變量名已由nginx設定好,可以看ngx_http_core_variables結構)
  • 有一定規(guī)則的變量,如”http_host”等(有相同前綴,表示某一類變量),我們就稱為規(guī)則變量吧
  • 從這里,也解決我們的問題,在配置access_log時,我們可以配置哪些變量,是否是用戶添加的變量,是否是內建變量在ngx_http_core_variables中有,其次,是否是規(guī)則變量,另外,如果想輸出自己的內容,那只能寫模塊自己添加一個變量了,或者hack nginx在ngx_http_core_variables中添加一個變量。

    more

    從nginx內部實現上來看,變量可分為:

  • hash過的變量
  • 未hash過的變量,變量有設置NGX_HTTP_VAR_NOHASH
  • 未hash過的變量,但有一定規(guī)則的變量,如以這些串開頭的:”http_”,”sent_http_”,”upstream_http_”,”cookie_”,”arg_”
  • 我們在模塊里面可以通過ngx_http_add_variable來添加一個變量,在后面的介紹中我們可以看到。而我們添加的變量,最好不要是以這些規(guī)則開頭的變量,否則就有可能會覆蓋掉這些規(guī)則的變量。

    從變量獲取者來看,可以分為索引變量與未索引的變量。

  • 索引變量,我們通過ngx_http_get_variable_index來獲得一個索引變量的索引號。然后可以通過ngx_http_get_indexed_variable與ngx_http_get_flushed_variable來獲取索引過變量的值。如果要索引某個變量,則只能在配置文件初始化的時候來設置。ngx_http_get_variable_index不會添加一個真正的變量,在配置文件初始化結束時,會檢查該變量的合法性。索引過的變量,將會有緩存等特性(緩存在r->variables中)。
  • 未索引過的變量,則只能通過ngx_http_get_variable來獲取變量的值。
  • 2. 相關結構

    接下來,我們就要開始進入源碼的世界了,先看看幾個關鍵結構:

    // ngx_variable_value_t即變量的結果,變量的值 typedef struct {unsigned len:28; unsigned valid:1; // 當前變量是否合法unsigned no_cacheable:1; // 當前變量是否可以緩存,緩存過的變量將只會調用一次get_handler函數unsigned not_found:1;// 變量是否找到unsigned escape:1;u_char *data; // 變量的數據 } ngx_variable_value_t; // 變量本身的信息 struct ngx_http_variable_s {ngx_str_t name; // 變量的名稱ngx_http_set_variable_pt set_handler; // 變量的設置函數ngx_http_get_variable_pt get_handler; // 變量的get函數uintptr_t data; // 傳給get與set_handler的值ngx_uint_t flags; // 變量的標志ngx_uint_t index; // 如果有索引,則是變量的索引號 }; // 在ngx_http_core_module的配置文件中保存了所使用的變量信息 typedef struct {ngx_hash_t variables_hash; // 變量的hash表ngx_array_t variables; // 索引變量的數組ngx_hash_keys_arrays_t *variables_keys; // 變量的hash數組 } ngx_http_core_main_conf_t; // 變量在每個請求中的值是不一樣的,也就是說變量是請求相關的 // 所以在ngx_http_request_s中有一個變量數組,主要用于緩存當前請求的變量結果 // 從而可以避免一個變量的多次計數,計算過一次的變量就不用再計算了 // 但里面保存的一定是索引變量的值,是否緩存,也要由變量的特性來決定 struct ngx_http_request_s {ngx_http_variable_value_t *variables; }

    3. 模塊中操作變量的函數

    那么,在模塊中,我們要如何使用一個變量呢?在前面講分類的時候,我們也提到過了,這里再總結并細說一下: 首先,如果要添加一個變量,我們需要調用ngx_http_add_variable函數來添加一個變量。添加時需要指明變量的名稱就行了。

    // name: 即變量的名字 // flags: 如果同一個變量要多次添加,則flags應該設置NGX_HTTP_VAR_CHANGEABLE // 否則,多次添加將會提示重復 // flags表示可以是:NGX_HTTP_VAR_CHANGEABLE // NGX_HTTP_VAR_NOCACHEABLE // NGX_HTTP_VAR_INDEXED // NGX_HTTP_VAR_NOHASH ngx_http_variable_t *ngx_http_add_variable(ngx_conf_t *cf, ngx_str_t *name, ngx_uint_t flags);

    然后,要獲取變量,如果要高效一點,我們可以先將該變量放到索引數組里面,通過ngx_http_get_variable_index來添加一個變量的索引:

    // name: 即nginx支持的任意變量名 // 返回該變量的索引 ngx_int_t ngx_http_get_variable_index(ngx_conf_t *cf, ngx_str_t *name);

    不過,要注意的是,添加的變量必須是nginx支持的已存在的變量。即如果是hash過的變量,則一定是通過ngx_http_add_variable添加的變量,否則,一定是規(guī)則變量,如”http_host”。當然,在解析配置文件的時候,變量不一定是要先通過ngx_http_add_variable然后才能獲取索引,這個是不需要有順序保證的。nginx會將在最后配置文件解析完成后,去驗證這些索引變量的合法性,在ngx_http_variables_init_vars函數中可以看到,我們在后面具體再分析。 所以,可以看到,獲取索引的操作,一定是要在解析配置文件的過程是進行的, 一旦配置文件解析完成后,索引變量不能再添加。在獲取索引號后,我們需要保存該索引號,以便在后面通過索引號來獲取變量。

    那么,索引變量的獲取,可以通過ngx_http_get_indexed_variable與ngx_http_get_flushed_variable來獲取,兩個函數間的區(qū)別,我們后面再介紹:

    ngx_http_variable_value_t *ngx_http_get_indexed_variable(ngx_http_request_t *r, ngx_uint_t index); ngx_http_variable_value_t *ngx_http_get_flushed_variable(ngx_http_request_t *r, ngx_uint_t index);

    而如果沒有索引過的變量,則只能通過ngx_http_get_variable函數來獲取了。

    // key 由ngx_hash_strlow來計算 ngx_http_variable_value_t *ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key);

    可以看到,key是通過ngx_hash_strlow來計算的,所以變量名是沒有大小寫區(qū)分的。

    最后,通過獲取變量的函數,我們可以看到,變量是與請求相關的,也就是獲取的變量都是與當前請求相關的。

    4. 變量的實現源碼及流程

    那接下來,我們就來看看nginx在源碼中的實現吧!

    初始化:

    首先,在數據結構中,我們知道ngx_http_core_main_conf_t中保存了變量相關的一些信息,我們添加的變量key放在cmcf->variables_keys中,而cmcf->variables保存變量的索引結構,cmcf->variables_hash則保存著變量hash過的結構。

    ngx_http_add_variable添加變量的時候,會先放到cmcf->variables_keys中,然后在解析完后,再生成hash結構體。

    那么,ngx_http_core_module的preconfiguration階段,調用ngx_http_variables_add_core_vars初始化變量的數據結構,然后再添加ngx_http_core_variables結構中的變量。所以可以看出,nginx中內建的變量是在這個數組里面的。 然后在解析其它模塊的配置文件時,會通過ngx_http_add_variable函數來添加變量:

    ngx_http_variable_t * ngx_http_add_variable(ngx_conf_t *cf, ngx_str_t *name, ngx_uint_t flags) {// 先檢查變量是否在已添加key = cmcf->variables_keys->keys.elts;for (i = 0; i < cmcf->variables_keys->keys.nelts; i++) {if (name->len != key[i].key.len|| ngx_strncasecmp(name->data, key[i].key.data, name->len) != 0){continue;}v = key[i].value;// 如果已添加,并且是不可變的變量,則提示變量的重復添加// 其它NGX_HTTP_VAR_CHANGEABLE就是為了讓變量的重復添加時不出錯,都指向同一變量if (!(v->flags & NGX_HTTP_VAR_CHANGEABLE)) {ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,"the duplicate \"%V\" variable", name);return NULL;}// 如果變量已添加,并且有NGX_HTTP_VAR_CHANGEABLE表志,則直接返回return v;}// 添加這個變量v = ngx_palloc(cf->pool, sizeof(ngx_http_variable_t));v->name.len = name->len;// 注意,變量名不區(qū)分大小寫ngx_strlow(v->name.data, name->data, name->len);rc = ngx_hash_add_key(cmcf->variables_keys, &v->name, v, 0);if (rc == NGX_ERROR) {return NULL;}return v; }

    在添加完變量后,我們需要設置變量的get_handler與set_handler。get_handler是當我們在獲取變量的時候調用的函數,在該函數中,我們需要設置變量的值。而在set_handler則是用于主動設置變量的值。get_handler與set_handler的區(qū)別是:get_handler是在變量使用時獲取值,而set_handler則是變量會主動先設置好,在使用的時候就不用再算了。目前,set指令,設置一個變量的值是用的set_handler。 在需要獲取變量的模塊中,可以通過ngx_http_get_variable_index來得到變量的索引,這個函數工作很簡單,就是在ngx_http_core_main_conf_t的variables中添加一個變量,并返回該變量在數組中的索引號。源碼就不展示了。然后,在解析配置文件之后,在ngx_http_block中通過ngx_http_variables_init_vars函數來初始化變量,在ngx_http_variables_init_vars中,會做兩個事情,檢查索引變量,以及初始化變量的hash表。首先,對索引數組中的每一個元素,會先檢查是否在ngx_http_core_main_conf_t的variables_keys中出現,即是否是添加過的,然后再檢查是否是有特定規(guī)則的變量,如”http_host”,如果都不是,則說明該變量是不存在的,該索引會對應于一個不存在的變量,所以就會提示錯誤,程序無法啟動。然后,如果變量有設置NGX_HTTP_VAR_NOHASH,則會跳過該變量,不進行hash,再對hash過的變量建立hash表。

    在請求中:?當一個請求過來時,在ngx_http_init_request函數中,即請求初始化的時候,會建立一個與ngx_http_core_main_conf_t中的變量索引數組variables大小一樣的數組。r->variables有兩個作用,一是為了緩存變量的值,二是可以在創(chuàng)建子請求時,父請求給子請求傳遞一些信息。注意,變量的值是與當前請求相關的,所以每個請求里面會不一樣。 然后在模塊里面ngx_http_get_indexed_variable和ngx_http_get_flushed_variable,這兩個函數的代碼還是要小講一下:

    ngx_http_variable_value_t * ngx_http_get_indexed_variable(ngx_http_request_t *r, ngx_uint_t index) {ngx_http_variable_t *v;ngx_http_core_main_conf_t *cmcf;cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);// 變量已經獲取過了,就不再計算變量的值,直接返回if (r->variables[index].not_found || r->variables[index].valid) {return &r->variables[index];}// 如果變量是初次獲取,則調用變量的get_handler來得到變量值,并緩存到r->variables中去v = cmcf->variables.elts;if (v[index].get_handler(r, &r->variables[index], v[index].data)== NGX_OK){if (v[index].flags & NGX_HTTP_VAR_NOCACHEABLE) {r->variables[index].no_cacheable = 1;}return &r->variables[index];}// 變量獲取失敗,設置為不合法,以及未找到// 注意我們在調用完本函數后,需要檢查函數的返回值以及這兩個屬性r->variables[index].valid = 0;r->variables[index].not_found = 1;return NULL; } ngx_http_variable_value_t * ngx_http_get_flushed_variable(ngx_http_request_t *r, ngx_uint_t index) {ngx_http_variable_value_t *v;v = &r->variables[index];if (v->valid) {// 變量已經獲取過了,而且是合法的并且可緩存的,則直接返回if (!v->no_cacheable) {return v;}// 否則,清除標志,并再次獲取變量的值v->valid = 0;v->not_found = 0;}return ngx_http_get_indexed_variable(r, index); }

    注意:ngx_http_get_flushed_variable會考慮到變量的cache標志,如果變量是可緩存的,則只有在變量是合法的時才返回變量的值,否則重新獲取變量的值。而ngx_http_get_indexed_variable則不管變量是否可緩存,只要獲取過一次了,不管是否成功,則都不會再獲取了。最后,如果是未索引的變量,我們可以通過ngx_http_get_variable函數來得到變量的值。ngx_http_get_variable做的工作:

  • 變量是hash過的,而且變量有索引過,則調用ngx_http_get_flushed_variable來得到變量值。
  • 變量hash過,未索引過,則調用變量的get_handler來獲取變量,注意,此時每次調用變量,都將會調用get_handler來計算變量的值,然后返回該值。注意因為只有索引過的變量的值才會緩存到ngx_http_request_t的variables中去,所以變量的添加方要注意,如果當前變量是可緩存的,要將該變量建立索引,即調用完ngx_http_add_variable后,再調用ngx_http_get_variable_index來將該變量建立索引。
  • 特定規(guī)則的變量,”http_”開頭的會調用ngx_http_variable_unknown_header_out函數,”upstream_http_”開頭的會調用ngx_http_upstream_header_variable函數,”cookie_”開頭的會調用ngx_http_variable_cookie函數,”arg_”開頭的會調用ngx_http_variable_argument函數。
  • 變量未找到,設置變量
  • 至此,變量的整個流程差不多就完了,另外還有一個要注意的是,在創(chuàng)建子請求時候的變量。在ngx_http_subrequest函數中,我們可以看到,子請求的variables是直接指向父請求的variables數組的,所以子請求與父請求是共享variables數組的,這樣父子請求就可以傳遞變量的值。但正因為如此,我們在使用父子請求的時候會產生一些問題,如果一個父請求創(chuàng)建多個子請求,他們之間獲取同一個變量時,會有很明顯的干擾,因為每個請求的環(huán)境是不一樣的,這樣獲取的值也是不一樣的。

    好吧,變量也簡單的介紹了一下。

    總結

    以上是生活随笔為你收集整理的nginx源码分析之变量的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    久久色在线观看 | 婷婷综合影院 | 91爱爱免费观看 | 高清av在线| 国产精品嫩草影院9 | 天天干,天天操 | 免费毛片一区二区三区久久久 | 国内丰满少妇猛烈精品播 | 2019久久精品| 国产69精品久久久久99尤 | 六月久久婷婷 | 亚洲精品视 | 国产一区二区免费看 | 国产小视频在线播放 | 成人久久18免费网站图片 | av黄色在线观看 | 天天色天天操综合 | 亚洲人成人99网站 | 国产五十路毛片 | .国产精品成人自产拍在线观看6 | 亚洲黄色在线观看 | 成人免费大片黄在线播放 | 四虎在线免费观看 | 精品自拍网| 九九九电影免费看 | 夜夜爽88888免费视频4848 | 日日射av | 美女网站视频色 | 日韩免费电影网站 | 超碰国产在线观看 | 91在线国产观看 | 黄色免费在线看 | 亚洲欧美国产视频 | 中文字幕欧美三区 | 综合色综合 | 天天干天天在线 | 久久视频在线观看 | 九色91视频| 欧美黑人性爽 | 婷婷亚洲五月色综合 | 天天干天天做 | 福利区在线观看 | 日本黄色a级大片 | www.久久婷婷 | 久久久久在线视频 | 日本中文字幕在线观看 | 久精品视频免费观看2 | www夜夜| 亚洲激情五月 | 91视频在线国产 | 天堂av一区二区 | 久久精品一区二区三区中文字幕 | 在线观看视频日韩 | 欧美日韩高清 | av综合站| 伊人激情综合 | 在线影院 国内精品 | 天天干天天怕 | 国产一区二区高清不卡 | 最新日韩电影 | 久久视频在线免费观看 | 另类五月激情 | 亚洲狠狠操 | 天天干,天天射,天天操,天天摸 | 中文字幕在线看视频国产中文版 | 一区二区视 | 亚洲乱码国产乱码精品天美传媒 | 亚洲精品国产品国语在线 | 成人精品一区二区三区中文字幕 | 黄色a在线观看 | 成人网在线免费视频 | 国产1级视频 | 最新日韩在线观看视频 | 色综合中文综合网 | 精品视频国产一区 | 天天爱天天射 | 成人91视频| av久久久久久 | 国产亚洲永久域名 | 国产精品第7页 | 三级黄色片在线观看 | 欧美一级专区免费大片 | 91免费网址| 日本超碰在线 | 91精品国产综合久久福利不卡 | 成人在线免费看视频 | 日韩av中文字幕在线 | 黄色a在线观看 | 久久精美视频 | 免费一级片视频 | 国产一区视频在线观看免费 | 开心综合网 | 欧美伦理一区二区三区 | 日韩偷拍精品 | 国产特级毛片aaaaaa毛片 | 天天色天天色天天色 | 久久久亚洲国产精品麻豆综合天堂 | 超碰在线国产 | 91麻豆精品国产91久久久久久 | 亚洲精品在线观看av | 在线观看国产中文字幕 | 国产在线小视频 | 深夜免费小视频 | 国产一区电影在线观看 | 亚洲激情在线 | 日韩美女黄色片 | 久久 地址 | 日韩精品中文字幕一区二区 | 99热精品在线观看 | 日本最新一区二区三区 | 亚洲精品黄网站 | 国产精品免费久久 | av不卡在线看 | 精品国产a | 日本在线观看中文字幕无线观看 | 中文字幕在线视频一区二区三区 | 国产精品久久久精品 | 麻豆91视频| 99久久精品免费看国产免费软件 | 欧美日韩性视频 | 99r在线| 色综合久久88色综合天天人守婷 | 国产主播99| 久久久久久久久久网 | 九九久| 99视频在线观看免费 | 日韩午夜精品福利 | 欧美色图一区 | 精品视频久久久 | 草久草久 | 国产清纯在线 | 成人在线观看日韩 | 国产99久久久精品视频 | 久久精品99国产精品酒店日本 | 看毛片的网址 | 在线观看成人小视频 | 久久99精品波多结衣一区 | 在线观看www.| 亚洲电影黄色 | 日韩在线观看第一页 | 日韩欧美精品在线观看视频 | 成人精品影视 | 欧美日韩电影在线播放 | 日韩免费小视频 | 嫩草av在线 | 夜夜躁狠狠躁日日躁视频黑人 | 一区二区三区精品在线 | av资源网在线播放 | 性色av一区二区三区在线观看 | 亚洲在线激情 | 黄色一级在线免费观看 | 西西444www大胆高清图片 | 久久精品日韩 | 高清精品久久 | 五月婷婷久久丁香 | 亚洲婷婷丁香 | www.久久久com | 午夜视频黄 | 日韩欧美电影 | 久久99久久99免费视频 | 在线视频区 | 狠狠网亚洲精品 | 久久看免费视频 | 国产又黄又硬又爽 | 日韩狠狠操 | 国产精品第二十页 | 在线精品视频在线观看高清 | 国产色小视频 | 视频一区亚洲 | 日韩色视频在线观看 | 精品国产乱码久久久久久天美 | 天天干天天弄 | 国产小视频福利在线 | 久久夜夜操 | 欧洲一区二区三区精品 | 久草剧场 | 丁香午夜婷婷 | 五月天婷婷在线视频 | 欧美中文字幕第一页 | 久久国产视频网站 | 亚洲高清免费在线 | 久久婷婷一区 | 国产精品久久久久久爽爽爽 | 黄色毛片在线观看 | 日本高清中文字幕有码在线 | 久久精品99久久久久久2456 | 啪啪激情网 | 国产一区二区精品久久91 | 免费看片网址 | 99在线观看 | 91在线播放综合 | 在线观看久久久久久 | 午夜视频在线观看一区 | 日本久久久亚洲精品 | 国产成人久久精品 | 黄色片网站大全 | 欧美日韩在线视频一区 | 国产不卡一 | 欧美日韩视频精品 | 免费高清在线观看电视网站 | 国产亚洲精品久久久久秋 | 免费av观看 | 狠狠色伊人亚洲综合成人 | 国内丰满少妇猛烈精品播 | 日韩在线资源 | 成年人视频在线观看免费 | 久久精品国产久精国产 | 最近中文字幕大全 | 日韩免费不卡视频 | 成人午夜影院 | 精品亚洲成人 | 久久久久影视 | 91黄视频在线观看 | 色狠狠操 | 五月天综合激情 | 精品91视频 | 久久精品免费看 | 日本免费久久高清视频 | 日韩欧美69 | va视频在线 | 国产专区日韩专区 | 日韩精品一区二区免费 | 日本三级香港三级人妇99 | 九草视频在线观看 | 日韩a欧美 | 免费看的黄色小视频 | 久久免费电影网 | 亚洲综合色视频在线观看 | 成人免费观看网站 | 夜夜躁天天躁很躁波 | 久久天天躁狠狠躁亚洲综合公司 | 亚洲天堂网在线视频观看 | 在线观看91精品视频 | 国产手机视频 | 五月天婷亚洲天综合网精品偷 | 国产精品久久久久久超碰 | 伊人色综合网 | 看片网站黄 | 久草网视频在线观看 | www日韩欧美 | 国产91精品看黄网站 | 99精品国产在热久久下载 | 中文字幕在线观看一区 | 黄色毛片视频 | 欧美一区二区在线刺激视频 | 99理论片| 91福利视频免费观看 | 日韩久久一区二区 | 婷婷亚洲激情 | 久久影视网 | 超碰在线观看av | 欧美日本啪啪无遮挡网站 | 玖草在线观看 | 免费看特级毛片 | 亚洲三级黄色 | 日本中文字幕观看 | 国产黄色免费观看 | 国产视频导航 | 国产精品久久久久久一区二区 | 久久久久久久看片 | 中文字幕一区二区三区久久 | 亚洲精品99久久久久久 | 91理论片午午伦夜理片久久 | 日日干天天插 | 久久久久久久久久影院 | 日批视频 | 亚洲视频免费在线观看 | 久久久影片 | 国产高清视频在线播放一区 | 国产91电影在线观看 | 日韩影视在线 | 久久人人看 | 欧美日韩精品国产 | 国产精品黄色影片导航在线观看 | 国产精品久久久久久一区二区 | 国产精品a久久 | 97超碰在线免费 | 在线看的毛片 | 国产成人av免费在线观看 | 黄色毛片视频免费观看中文 | 亚洲视频www | 国产欧美精品在线观看 | 日韩一区二区三区免费电影 | 中文字幕你懂的 | 成人精品电影 | av在线亚洲天堂 | 亚洲精品资源在线观看 | 国产精品视频永久免费播放 | 丁香六月婷婷开心婷婷网 | 欧美色图p| 丁香亚洲| 综合久色| 69亚洲精品 | 免费三级黄色 | 五月天九九 | 国产三级视频 | 四虎国产精品永久在线国在线 | 97视频在线免费观看 | 999国内精品永久免费视频 | av三级在线免费观看 | 最新av中文字幕 | 国产97在线视频 | www.色婷婷 | 国产精品 中文字幕 亚洲 欧美 | 美女免费黄网站 | 国产福利资源 | 国产成人性色生活片 | 亚洲最大av在线播放 | 99在线高清视频在线播放 | 成人在线黄色 | 人人干人人超 | 狠狠躁夜夜躁人人爽超碰97香蕉 | av高清免费在线 | 亚洲最新在线 | 99国产成+人+综合+亚洲 欧美 | 国产成人一区二区三区 | 97成人精品 | 欧美大片mv免费 | 91人人插| 三级av在线 | 精品一区二区三区香蕉蜜桃 | 色噜噜狠狠色综合中国 | 国产黄大片在线观看 | 亚洲视频电影在线 | 四虎影院在线观看av | 国产特级毛片 | 婷婷av资源| 久久精品欧美 | 最近字幕在线观看第一季 | 精品国产欧美一区二区三区不卡 | 免费电影播放 | 天堂在线成人 | 一二三精品视频 | 国产亚洲综合性久久久影院 | avwww在线| 日韩电影在线观看一区 | 成人黄色电影免费观看 | 亚洲国产三级在线观看 | 久久精品这里精品 | 激情视频免费在线 | 四虎影视成人精品国库在线观看 | 欧美精品免费在线观看 | 国产成人一区二区三区在线观看 | 中文字幕第一页av | 一区二区伦理电影 | 国内精品久久久久久中文字幕 | 久久字幕网 | 国产破处在线播放 | 国产一区二区午夜 | 亚洲精品视频中文字幕 | 欧美一区免费观看 | 97视频精品| 中文字幕av最新 | 99久久精品免费看国产免费软件 | 日韩亚洲国产中文字幕 | 在线导航福利 | 免费在线播放av电影 | 日韩精品中文字幕av | 国产精品av在线 | 免费av网站观看 | 久久黄色免费 | 五月综合久久 | 中文字幕亚洲精品日韩 | 欧美精品久久久久久久免费 | 四虎影视精品永久在线观看 | 中文字幕免费看 | 激情av在线资源 | 黄色三级网站 | 国产999| 国产一级不卡毛片 | 91av在线播放视频 | 激情欧美一区二区三区免费看 | 久久综合狠狠综合久久狠狠色综合 | 久久综合爱 | 免费看污黄网站 | 在线中文字幕一区二区 | 亚洲精品在线观看不卡 | 啪啪凸凸 | 91精品久久久久久综合乱菊 | 国内丰满少妇猛烈精品播 | 最近中文字幕高清字幕在线视频 | 久草在线一免费新视频 | 欧美专区亚洲专区 | 最近中文字幕完整高清 | 国产亚洲资源 | 日韩一区在线播放 | 欧美另类人妖 | 亚洲黄色av一区 | 精品久久久久久久久久久久久久久久久久 | 国产精品原创在线 | www.成人sex| 久草在线久草在线2 | 久久不卡免费视频 | 99久久一区 | 麻豆视频一区二区 | 久久精品中文视频 | 96香蕉视频 | 中文字幕在线观看一区二区三区 | 黄色成人av在线 | 国产一级二级三级在线观看 | 成人在线观看你懂的 | 国产精品日韩高清 | 色a在线观看 | 亚洲四虎影院 | 日韩精品免费在线观看 | 九九久久国产 | 91视频在线观看免费 | 97超级碰碰 | 日本中文字幕在线观看 | 激情动态 | 国产欧美精品一区二区三区四区 | 日韩在线观看视频免费 | 久久手机免费观看 | 天天操天天射天天操 | 色婷婷天天干 | 91丨精品丨蝌蚪丨白丝jk | 亚洲激情视频在线 | 97在线公开视频 | 国产精品综合久久久 | 亚洲精品视频在线观看网站 | 欧美一区在线观看视频 | 中文字幕av最新 | 国产精品午夜av | 久久久这里有精品 | 亚洲理论片在线观看 | 色多多视频在线观看 | av在线播放国产 | 五月婷视频 | 婷婷草| 欧美 另类 交 | 视频在线观看亚洲 | 2018好看的中文在线观看 | 日本中文字幕观看 | 色婷婷综合五月 | 日韩一区二区三区免费电影 | 色天天 | 久久国产精品99精国产 | 97超碰资源网 | 欧美伦理电影一区二区 | 一区二区三区日韩在线观看 | 激情婷婷综合 | 国产精品一区二区三区免费看 | 亚洲亚洲精品在线观看 | 在线国产中文字幕 | 午夜体验区 | 亚洲激色 | 午夜国产一区二区三区四区 | 国产在线a视频 | 九九色在线观看 | 日韩高清在线观看 | 色福利网站 | 狠狠五月天 | 91精品国产91p65 | 国产一区国产二区在线观看 | 久久久久女人精品毛片 | 久久久久久久av | 国产精品毛片一区二区在线 | 国产精品久久久久久久久久东京 | 91超碰免费在线 | 天天操婷婷 | 91久久奴性调教 | 亚洲精品91天天久久人人 | 欧美日韩国产精品一区二区亚洲 | 国产精品专区h在线观看 | 天天色天天操天天爽 | a黄色大片 | 欧美日韩在线观看视频 | 97精品国产97久久久久久免费 | 欧美日韩不卡在线视频 | 午夜精品久久久久久99热明星 | 国产中文字幕一区 | 精品一二三四五区 | 中文国产在线观看 | 中文字幕第一页av | 亚洲全部视频 | 国产日韩欧美在线看 | 久久精品屋 | 四虎成人精品永久免费av | 97视频网站| 成人宗合网 | 特级毛片在线观看 | 久草免费在线观看视频 | 日韩电影在线一区 | 欧美久久久影院 | 亚洲婷婷网 | av电影中文字幕在线观看 | 97超级碰碰 | 亚洲va在线va天堂va偷拍 | www日| 亚洲午夜精品久久久久久久久久久久 | 99热国产在线 | 中文在线a∨在线 | 九九热av | 黄色高清视频在线观看 | 欧美一区二视频在线免费观看 | 国产在线观看二区 | 日韩精品一区二区三区高清免费 | 91丨九色丨国产在线观看 | 国产精选视频 | a在线观看国产 | 色在线观看网站 | 夜添久久精品亚洲国产精品 | 久久精品一区二区国产 | 亚洲欧美日韩在线一区二区 | 中文字幕在线视频一区二区三区 | 亚洲爽爽网 | 亚洲综合导航 | 亚洲欧美婷婷六月色综合 | av免费看av| 精品91视频 | 亚洲国产成人久久综合 | 亚洲九九九在线观看 | 欧美最猛性xxxxx免费 | 丝袜美腿av| 亚洲涩涩网站 | av一区二区在线观看中文字幕 | 欧美日韩网站 | 欧美精品久久久久久久免费 | 91看片网址 | 在线免费av网站 | 青青久草在线 | 国产高清99 | 99久久久国产精品免费99 | 四虎影视精品成人 | 看片网站黄色 | 欧美久久电影 | 久久视精品 | 久草热视频 | 久久9999久久 | 婷婷久久综合九色综合 | 日韩美女高潮 | av中文字幕第一页 | 蜜臀久久99精品久久久无需会员 | 国产伦精品一区二区三区免费 | 伊人久久婷婷 | 日b视频在线观看网址 | 韩国av电影网 | 欧美一级片在线免费观看 | 成年人国产精品 | 国产高清在线永久 | 天天干天天天天 | 免费在线观看av电影 | 日韩中文字幕亚洲一区二区va在线 | 亚洲成人一二三 | 国产欧美精品一区二区三区四区 | 99九九视频 | 亚洲一区视频免费观看 | www.婷婷com| 欧美另类成人 | 在线观看精品一区 | 亚洲成a人片77777潘金莲 | 国产黄色av | 国产人成在线视频 | 福利视频在线看 | 欧美精品久久久久久久久老牛影院 | 久久男人中文字幕资源站 | 午夜成人免费影院 | 91九色视频在线 | 国产精品99久久久久 | 91成人在线免费观看 | 免费a级黄色毛片 | 国产麻豆视频网站 | 久久久久久久久福利 | 国产一区二区三区在线免费观看 | 91精品啪在线观看国产线免费 | 国产精品video | 午夜国产福利在线观看 | 免费观看性生活大片3 | 91久久丝袜国产露脸动漫 | 一区二区三区日韩在线观看 | 精品国产乱码久久久久久1区2匹 | 五月天综合婷婷 | 国内久久看 | av一区二区三区在线观看 | 日韩免费成人 | 一区二区三区国产欧美 | 综合在线观看色 | 91视视频在线直接观看在线看网页在线看 | 91精品久久久久久久久久入口 | www五月婷婷| 91久久精| 免费大片av | 久久久精品在线观看 | 成人黄在线 | 久久免费看毛片 | 国产色婷婷精品综合在线手机播放 | 亚洲成av人影院 | 久久久91精品国产 | 日韩| 日本丶国产丶欧美色综合 | 国产在线超碰 | 亚洲精品资源在线观看 | 国产成人综| 久久免费看片 | 成人亚洲精品国产www | 五月花丁香婷婷 | 九九热在线视频免费观看 | 日韩免费视频 | 波多在线视频 | 一区三区视频 | 国产视频精选在线 | 国产成人精品午夜在线播放 | 福利网在线 | 午夜丁香网 | 国产精品成人a免费观看 | 一区二区三区久久 | 亚洲视频免费在线看 | 国产丝袜 | 欧美综合色在线图区 | 精品中文字幕在线观看 | 久久视精品 | 伊人影院在线观看 | 亚洲全部视频 | 日韩欧美xxx | 在线观看韩国av | 欧美少妇影院 | 99久久国产免费看 | 国产美女久久 | 日韩高清一二区 | 精品一区二区久久久久久久网站 | 99久久精品国产欧美主题曲 | 国产1级毛片 | 免费黄色a级毛片 | av中文字幕网站 | 狠狠操狠狠插 | 亚洲黄色一级视频 | 999视频网 | 久久免费视频7 | 在线观看av大片 | 亚洲一区黄色 | 国产码电影 | 日韩中文字幕一区 | 激情av网 | 天天干天天玩天天操 | 99精品视频在线观看 | www色,com| 97品白浆高清久久久久久 | 91视频首页| 日韩性片 | 国产视频亚洲 | 亚洲在线网址 | 一区二区精品在线 | 人人藻人人澡人人爽 | 日韩在线国产精品 | 国产精品久久久久久久99 | 97精品一区二区三区 | www.久久99 | 98涩涩国产露脸精品国产网 | 欧美贵妇性狂欢 | 亚洲在线视频免费观看 | 成人av在线资源 | 啪一啪在线 | 日本丶国产丶欧美色综合 | 97偷拍视频 | 色综合久久久久久中文网 | av黄网站| 91高清视频 | 天天干,天天草 | 久久久久久久久毛片 | 国产美女视频一区 | 免费看十八岁美女 | 丝袜少妇在线 | 亚洲黄色软件 | 成人一区二区在线观看 | 96精品视频 | 日韩av一区二区在线播放 | 99在线免费观看视频 | 国产成人免费在线观看 | 麻豆视频在线看 | 日韩欧美视频在线播放 | 亚洲免费资源 | 亚洲无吗av | 中文字幕在线免费观看视频 | 久久精国产 | 91最新视频在线观看 | 欧美另类性 | 中文字幕在线一区二区三区 | 福利在线看片 | 亚洲免费av在线 | 成人在线一区二区 | 中文字幕在线视频一区二区三区 | 国产精品久久久久影院 | 色姑娘综合天天 | 日日躁你夜夜躁你av蜜 | 在线视频亚洲 | 在线看片一区 | 欧美日韩一区二区视频在线观看 | 五月婷婷综合在线 | 国产精品久久久久久久久蜜臀 | 亚洲国产网址 | 美女免费视频一区 | 最新日韩精品 | 美女性爽视频国产免费app | 国产一区不卡在线 | 欧美人牲 | 成人一级免费视频 | 亚在线播放中文视频 | 国产成人精品亚洲精品 | 欧美大片第1页 | 99久久精品电影 | 久久国内免费视频 | 久久99视频免费观看 | 日韩精品中文字幕有码 | 日韩午夜视频在线观看 | 在线不卡a | 欧美少妇的秘密 | a天堂最新版中文在线地址 久久99久久精品国产 | 日韩一区二区三区高清在线观看 | av千婊在线免费观看 | 国产精品女主播一区二区三区 | 免费在线观看成人小视频 | 黄污网站在线观看 | 久久综合99 | 黄色片网站av | 日韩精品一区电影 | 91精品久久久久久久久久入口 | 国产成本人视频在线观看 | 日韩精品亚洲专区在线观看 | 最近最新最好看中文视频 | 天堂va欧美va亚洲va老司机 | 91九色蝌蚪视频网站 | 97国产 | 亚洲欧洲国产精品 | 97理论电影| 亚洲精品综合久久 | 久久99久| 欧美专区日韩专区 | 中文字幕 国产 一区 | 欧美日一级片 | 欧美另类性 | 中文字幕在线观看第一区 | 久久久三级视频 | 日日夜夜天天久久 | 国产精品免费久久久久久 | 人人爽影院 | 久久亚洲影院 | 国产一级二级在线播放 | 欧美激情综合色 | 色老板在线视频 | 狠狠色伊人亚洲综合成人 | 中文字幕免费一区 | 激情综合啪啪 | 色综合天天天天做夜夜夜夜做 | 亚洲视频 中文字幕 | 人人射人人射 | 日韩女同av | 国外调教视频网站 | 亚洲成色777777在线观看影院 | 久久综合九色综合97_ 久久久 | 久久久久久久av | 国产精品成人一区二区三区 | 美女视频黄,久久 | 久久精品系列 | 久草免费手机视频 | 99久久精品国产亚洲 | 一区二区三区在线影院 | 天天射天天爱天天干 | 人人爽人人澡人人添人人人人 | 亚洲一区日韩在线 | 国产精品一二 | 亚洲精品视频免费在线 | 成人一区二区三区中文字幕 | 黄色a一级视频 | 欧美在线观看视频一区二区 | 激情综合五月婷婷 | 91中文字幕永久在线 | 国产成人高清 | 欧美精品一区二区蜜臀亚洲 | 五月开心婷婷 | 久久欧美精品 | www.精选视频.com | 日韩免费中文 | 国产精品都在这里 | 成人毛片在线观看视频 | 亚洲国产中文字幕在线 | 午夜精品久久久久久久久久久 | 夜又临在线观看 | 日韩激情在线 | 97香蕉超级碰碰久久免费软件 | 久草99| 伊人五月天综合 | 91精品系列 | 五月天婷亚洲天综合网鲁鲁鲁 | 欧美日韩裸体免费视频 | 色.www | 久久国产精品一区二区三区 | 国产精品嫩草69影院 | 亚洲码国产日韩欧美高潮在线播放 | 高清av免费看| www国产在线 | 日韩精品播放 | 国产在线观 | 日韩久久久久久久久久久久 | 69国产精品视频免费观看 | 亚洲国产成人精品在线 | 国产精品一区免费观看 | 国产亚洲精品久久久久动 | 热久精品 | 亚洲视频精品在线 | 国产成人l区 | 美女福利视频 | 色狠狠综合天天综合综合 | 91成人区 | 二区三区毛片 | 久久久久免费网站 | 欧美国产日韩在线观看 | 国产免费一区二区三区网站免费 | 国产小视频免费在线网址 | www.97视频 | 亚洲精品在线观看网站 | 欧美亚洲成人免费 | 日韩久久激情 | 808电影免费观看三年 | 韩国视频一区二区三区 | 国产成人不卡 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 成人动漫精品一区二区 | 久精品在线观看 | 久久视频一区二区 | 色婷婷激情五月 | 精品视频专区 | 天天综合久久综合 | 久久免费在线观看视频 | 91av手机在线 | 久久伦理电影网 | 久久视频国产精品免费视频在线 | 国产精品欧美日韩在线观看 | 国产99久久九九精品 | 欧美激情视频一二区 | 国产精品乱码久久久久久1区2区 | 香蕉网在线观看 | 欧美另类交在线观看 | 久久国产综合视频 | 91精品国自产在线 | 国产aa免费视频 | 日本一区二区三区免费看 | 精品国产理论 | 国产不卡视频在线播放 | 99久久婷婷国产综合精品 | 欧美久久久影院 | 欧美一级性生活 | 亚洲精品播放 | 亚洲精品资源 | 福利一区二区在线 | 超碰人人av | 在线观看日韩精品视频 | 国产91区| 精品国产免费一区二区三区五区 | 欧美一区二区在线刺激视频 | 日日摸日日添日日躁av | 黄色资源在线 | 国产综合香蕉五月婷在线 | 欧美精品一区二区蜜臀亚洲 | 中午字幕在线观看 | 久久久久人人 | 日本婷婷色 | 国产精品黄 | av免费播放 | 在线观看久 | 中文字幕亚洲综合久久五月天色无吗'' | 免费一级片在线观看 | 国产一区二区在线影院 | 色婷婷激情四射 | 91九色精品女同系列 | 亚洲欧美国产视频 | 国产小视频福利在线 | 国产蜜臀av | 免费看国产黄色 | 亚洲精欧美一区二区精品 | 欧美狠狠色 | 国内精品久久久久久久久久清纯 | 免费在线精品视频 | 亚洲最大成人免费网站 | 久久久久久久久久久电影 | 天堂av一区二区 | 精品在线观看一区二区三区 | 一区二区三区四区精品视频 | 天堂在线一区二区 | 国产人成精品一区二区三 | 91免费看片黄 | 四虎影视成人精品国库在线观看 | 亚洲欧洲一区二区在线观看 | 精品国产亚洲一区二区麻豆 | 91久久精品日日躁夜夜躁国产 | 国产剧情一区二区在线观看 | 日日操网站| 天天色综合久久 | 亚洲激情电影在线 | 99国产精品久久久久老师 | 亚洲激情在线视频 | 欧洲色吧 | 国产精久久 | 国产精品一区在线观看你懂的 | 91超在线| 2019精品手机国产品在线 | 国产在线高清视频 | 在线免费观看涩涩 | 激情视频国产 | 久久综合操 | 国产一区免费 | 天天色草 | 99国产一区二区三精品乱码 | 激情小说 五月 | 国产精品免费观看视频 | 欧美在线视频精品 | 亚洲国产精品激情在线观看 | 欧日韩在线 | 日本久久精品视频 | 亚洲一区二区三区四区在线视频 | zzijzzij亚洲成熟少妇 | 国产成人免费在线观看 | 久久久精品一区二区 | 美女免费黄视频网站 | 激情婷婷在线观看 | 在线视频免费观看 | 欧美激情第八页 | 手机看片午夜 | 碰碰影院 | 欧美最猛性xxxxx亚洲精品 | av夜夜操| 国产专区视频在线 | 99久久精品免费看国产一区二区三区 | 国际av在线 | 手机成人免费视频 | 免费观看成人网 | 色香蕉在线 | 超碰97在线看 | 91麻豆免费版 | 日韩网站在线观看 | 黄色国产高清 | 97超碰成人在线 | 国产在线91在线电影 | 久久国语| 国产精品美女久久久久aⅴ 干干夜夜 | 成人av网站在线播放 | 色婷婷狠 | 在线观看免费视频你懂的 | 国产中出在线观看 | 国产一级电影网 | 综合激情av | 亚洲 欧美 国产 va在线影院 | 日韩r级电影在线观看 | 国产精品夜夜夜一区二区三区尤 | 成人黄大片视频在线观看 | 国产福利在线免费观看 | 日韩午夜高清 | 狠狠做深爱婷婷综合一区 | 天天躁日日躁狠狠躁av中文 | 午夜精品久久久久久久久久久 | 久久精品美女 | 国产一级视频在线 | 亚洲 综合 国产 精品 | 91女人18片女毛片60分钟 | 久久久免费高清视频 | 国产视频网站在线观看 | 精品欧美日韩 | 久久tv视频 | 日韩欧美91 | 中文字幕在线观看免费观看 | 日韩簧片在线观看 | 亚洲婷婷伊人 | 亚洲不卡av一区二区三区 | 欧美日韩国产精品久久 | 免费av网址在线观看 | 西西www4444大胆视频 | 在线99视频 | 国产美女精品在线 | 天堂黄色片 | 92精品国产成人观看免费 | 91视频 - 114av| 日韩在线高清免费视频 | 天天射天天射天天 | www.婷婷com | 成人久久免费 | 国产午夜三级一区二区三桃花影视 | 91网页版在线观看 | 欧美成人一区二区 | 激情久久综合网 | 精品国产一区二区三区在线观看 | 最近字幕在线观看第一季 | 99久久精品久久久久久清纯 | 丁香婷婷激情五月 | 不卡的一区二区三区 | 国产福利久久 | 一级片黄色片网站 | 日韩精品免费在线 | 色在线国产 | 国产精品久久久久久久免费 | 97人人澡人人添人人爽超碰 | 色多多视频在线观看 | www麻豆视频| 最新国产视频 | 亚洲影视资源 | av成年人电影| 人人干狠狠干 | 久99久精品视频免费观看 | 国产a视频免费观看 | 亚洲日本欧美 |