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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

nginx源码分析之网络初始化

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

nginx作為一個高性能的HTTP服務器,網絡的處理是其核心,了解網絡的初始化有助于加深對nginx網絡處理的了解,本文主要通過nginx的源代碼來分析其網絡初始化。

從配置文件中讀取初始化信息

與網絡有關的配置命令主要有兩個:listen和sever_name。首先先了解這兩個命令的用法。

listen

listen命令設置nginx監聽地址,nginx從這里接受請求。對于IP協議,這個地址就是address和port;對于UNIX域套接字協議,這個地址就是path。 一條listen指令只能指定一個address或者port。 address也可以是主機名。 比如:

1 listen 127.0.0.1:8000; 2 listen 127.0.0.1; 3 listen 8000; 4 listen *:8000; 5 listen localhost:8000;

IPv6地址用方括號來表示:

1 listen [::]:8000; 2 listen [fe80::1];

UNIX域套接字則使用“unix:”前綴:

1 listen unix:/var/run/nginx.sock;

如果只定義了address,nginx將使用80端口。在沒有定義listen指令的情況下,如果以超級用戶權限運行nginx,它將監聽*:80,否則他將監聽*:8000。如果listen指令攜帶default_server參數,當前虛擬主機將成為指定address:port的默認虛擬主機。 如果任何listen指令都沒有攜帶default_server參數,那么第一個監聽address:port的虛擬主機將被作為這個地址的默認虛擬主機。之所以會有默認虛擬主機,是由于同一個address:port可能會隸屬于很多個虛擬主機,而區分這些虛擬主機則是用server_name指定各個虛擬主機的主機名。

可以為listen指令定義若干額外的參數,這些參數用于套接字相關的系統調用。 這些參數可以在任何listen指令中指定,但是對于每個address:port,只能定義一次。具體參數看以到nginx幫助文檔中查到,這里就不再說明了。

更詳細的介紹:http://nginx.org/cn/docs/http/ngx_http_core_module.html#listen

server_name

listen指令描述虛擬主機接受連接的地址和端口,用server_name指令列出虛擬主機的所有主機名。

設置虛擬主機名,比如:

1 server { 2 server_name example.com www.example.com; 3 }

第一個名字成為虛擬主機的首要主機名。

主機名中可以含有星號(“?*?”),以替代名字的開始部分或結尾部分:

1 server { 2 server_name example.com *.example.com www.example.*; 3 }

也可以在主機名中使用正則表達式,就是在名字前面補一個波浪線(“~”):

1 server { 2 server_name www.example.com ~^www\d+\.example\.com$; 3 }

更詳細的介紹:http://nginx.org/cn/docs/http/server_names.html

了解了這兩個命令的用法后,下面來看下源碼中處理這兩個命令的函數ngx_http_core_listen和ngx_http_core_server_name,這兩個函數都在ngx_http_core_module.c文件中定義,也就是說這兩個命令屬于模塊ngx_http_core_module。

1 static char * 2 ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) 3 { 4 ... 5 cscf->listen = 1; 6 value = cf->args->elts; 7 ngx_memzero(&u, sizeof(ngx_url_t)); 8 9 u.url = value[1]; 10 u.listen = 1; 11 u.default_port = 80; 12 //解析listen命令后面的參數,ip:port 13 if (ngx_parse_url(cf->pool, &u) != NGX_OK) { 14 if (u.err) { 15 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 16 "%s in \"%V\" of the \"listen\" directive", 17 u.err, &u.url); 18 } 19 return NGX_CONF_ERROR; 20 } 21 //根據上面解析的參數初始化ngx_http_listen_opt_t結構 22 ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t)); 23 ngx_memcpy(&lsopt.u.sockaddr, u.sockaddr, u.socklen); 24 lsopt.socklen = u.socklen; 25 ... 26 //解析其它參數,如default_server,bind等,并通過這些參數設置lsopt 27 ... 28 //將解析到的虛擬主機的地址信息加入到監聽列表中 29 if (ngx_http_add_listen(cf, cscf, &lsopt) == NGX_OK) { 30 return NGX_CONF_OK; 31 } 32 return NGX_CONF_ERROR; 33 }

從ngx_http_core_listen函數代碼可以看出,ngx_http_add_listen函數是其主要的部分,下面看下ngx_http_add_listen:

1 ngx_int_t 2 ngx_http_add_listen(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, 3 ngx_http_listen_opt_t *lsopt) 4 { 5 ... 6 //獲取ngx_http_core_module的main配置結構 7 cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module); 8 if (cmcf->ports == NULL) { //初始化ports數組 9 cmcf->ports = ngx_array_create(cf->temp_pool, 2, 10 sizeof(ngx_http_conf_port_t)); 11 if (cmcf->ports == NULL) { 12 return NGX_ERROR; 13 } 14 } 15 sa = &lsopt->u.sockaddr; 16 ... //解析協議 17 port = cmcf->ports->elts; //查看已經注冊的port,是否新加入地址信息中的port已經存在了 18 for (i = 0; i < cmcf->ports->nelts; i++) { 19 if (p != port[i].port || sa->sa_family != port[i].family) { 20 continue; 21 } 22 //port已經存在了,將地址信息加入到這個port的地址列表中 23 return ngx_http_add_addresses(cf, cscf, &port[i], lsopt); 24 } 25 //port不存在,將新的port加入到ports數組中 26 port = ngx_array_push(cmcf->ports); 27 if (port == NULL) { 28 return NGX_ERROR; 29 } 30 port->family = sa->sa_family; 31 port->port = p; 32 port->addrs.elts = NULL; 33 return ngx_http_add_address(cf, cscf, port, lsopt); //將地址信息加入到對應port的地址列表中,一個port可以對應過個地址 34 }

ngx_http_add_listen中調用了ngx_http_add_addresses和ngx_http_add_address函數,先看下ngx_http_add_addresses:

1 static ngx_int_t 2 ngx_http_add_addresses(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, 3 ngx_http_conf_port_t *port, ngx_http_listen_opt_t *lsopt) 4 { 5 ... 6 sa = &lsopt->u.sockaddr; 7 ... 8 p = lsopt->u.sockaddr_data + off; 9 addr = port->addrs.elts; 10 for (i = 0; i < port->addrs.nelts; i++) { 11 if (ngx_memcmp(p, addr[i].opt.u.sockaddr_data + off, len) != 0) { 12 continue; 13 } 14 //新加入的地址已經在地址列表中存在了,將新的虛擬主機信息加入到這個地址的虛擬主機列表中 15 if (ngx_http_add_server(cf, cscf, &addr[i]) != NGX_OK) { 16 return NGX_ERROR; 17 } 18 default_server = addr[i].opt.default_server; 19 if (lsopt->set) { //新的虛擬主機信息中設置了其它參數 20 21 if (addr[i].opt.set) { 22 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 23 "duplicate listen options for %s", addr[i].opt.addr); 24 return NGX_ERROR; 25 } 26 27 addr[i].opt = *lsopt; 28 } 29 if (lsopt->default_server) { //新的虛擬主機被設置為默認主機 30 31 if (default_server) { 32 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, 33 "a duplicate default server for %s", addr[i].opt.addr); 34 return NGX_ERROR; 35 } 36 default_server = 1; 37 addr[i].default_server = cscf; 38 } 39 addr[i].opt.default_server = default_server; 40 ... 41 return NGX_OK; 42 } 43 //添加新地址信息到port的地址列表中 44 return ngx_http_add_address(cf, cscf, port, lsopt); 45 }

ngx_http_add_addresses函數中如果address:port都已經存在了,則調用ngx_http_add_server將新的虛擬主機的配置加入到address:port對應的虛擬主機列表中,由于一個address:port是可以對應多個虛擬主機的。如果address:port不存在,則調用ngx_http_add_address,將新的address加入到port地址列表中。下面看下ngx_http_add_address函數:

1 ngx_http_add_address(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, 2 ngx_http_conf_port_t *port, ngx_http_listen_opt_t *lsopt) 3 { 4 ngx_http_conf_addr_t *addr; 5 //初始化port地址列表 6 if (port->addrs.elts == NULL) { 7 if (ngx_array_init(&port->addrs, cf->temp_pool, 4, 8 sizeof(ngx_http_conf_addr_t)) 9 != NGX_OK) 10 { 11 return NGX_ERROR; 12 } 13 } 14 ... 15 //將新地址加入到地址列表中 16 addr = ngx_array_push(&port->addrs); 17 if (addr == NULL) { 18 return NGX_ERROR; 19 } 20 addr->opt = *lsopt; 21 addr->hash.buckets = NULL; 22 addr->hash.size = 0; 23 addr->wc_head = NULL; 24 addr->wc_tail = NULL; 25 addr->default_server = cscf; 26 addr->servers.elts = NULL; 27 //將新的虛擬主機信息加入到這個地址的虛擬主機列表中 28 return ngx_http_add_server(cf, cscf, addr); 29 }

這個函數代碼很簡單,初始化地址列表,并調用ngx_http_add_server將新的虛擬主機的配置加入到address:port對應的虛擬主機列表中。下面再看下ngx_http_add_server函數:

1 static ngx_int_t 2 ngx_http_add_server(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf, 3 ngx_http_conf_addr_t *addr) 4 { 5 ... 6 server = ngx_array_push(&addr->servers); //添加新的虛擬主機配置 7 if (server == NULL) { 8 return NGX_ERROR; 9 } 10 *server = cscf; 11 return NGX_OK; 12 }

上面的對listen指令的處理函數基本分析完了,接下來再分析server_name指令對應的函數ngx_http_core_server_name:

1 static char * 2 ngx_http_core_server_name(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) 3 { 4 ... 5 value = cf->args->elts; 6 for (i = 1; i < cf->args->nelts; i++) { 7 ... 8 sn = ngx_array_push(&cscf->server_names); 9 if (sn == NULL) { 10 return NGX_CONF_ERROR; 11 } 12 ... 13 sn->name = value[i]; 14 ... 15 }

這個函數主要是把server_name命令后面各個主機名放到當前虛擬主機配置的server_names數組中。

分析到這里,已經將配置文件中所有虛擬主機配置信息都讀取到ngx_http_core_module模塊的配置信息的ports中。在http命令的處理函數ngx_http_block最后調用了函數ngx_http_optimize_servers對上面的配置信息做了優化,下面具體來看下這個函數:

1 static ngx_int_t 2 ngx_http_optimize_servers(ngx_conf_t *cf, ngx_http_core_main_conf_t *cmcf, 3 ngx_array_t *ports) 4 { 5 ... 6 port = ports->elts; 7 for (p = 0; p < ports->nelts; p++) { 8 9 ngx_sort(port[p].addrs.elts, (size_t) port[p].addrs.nelts, 10 sizeof(ngx_http_conf_addr_t), ngx_http_cmp_conf_addrs); 11 addr = port[p].addrs.elts; 12 for (a = 0; a < port[p].addrs.nelts; a++) { 13 ... 14 if (ngx_http_server_names(cf, cmcf, &addr[a]) != NGX_OK) { 15 return NGX_ERROR; 16 } 17 } 18 if (ngx_http_init_listening(cf, &port[p]) != NGX_OK) { 19 return NGX_ERROR; 20 } 21 } 22 return NGX_OK; 23 }

這個函數先對每個address:port調用ngx_http_server_names函數,然后對每個port調用ngx_http_init_listening函數。下面看看ngx_http_server_names函數:

1 static ngx_int_t 2 ngx_http_server_names(ngx_conf_t *cf, ngx_http_core_main_conf_t *cmcf, 3 ngx_http_conf_addr_t *addr) 4 { 5 ... 6 if (ngx_hash_keys_array_init(&ha, NGX_HASH_LARGE) != NGX_OK) { 7 goto failed; 8 } 9 cscfp = addr->servers.elts; 10 for (s = 0; s < addr->servers.nelts; s++) { 11 //每個server_name后面會帶有多個域名 12 name = cscfp[s]->server_names.elts; 13 for (n = 0; n < cscfp[s]->server_names.nelts; n++) { 14 ... 15 rc = ngx_hash_add_key(&ha, &name[n].name, name[n].server, 16 NGX_HASH_WILDCARD_KEY); 17 ... 18 } 19 } 20 } 21 ... 22 if (ha.keys.nelts) { //無通配 23 hash.hash = &addr->hash; //非通配hash 24 hash.temp_pool = NULL; 25 26 if (ngx_hash_init(&hash, ha.keys.elts, ha.keys.nelts) != NGX_OK) { 27 goto failed; 28 } 29 } 30 if (ha.dns_wc_head.nelts) { //前綴通配 31 ngx_qsort(ha.dns_wc_head.elts, (size_t) ha.dns_wc_head.nelts, 32 sizeof(ngx_hash_key_t), ngx_http_cmp_dns_wildcards); 33 34 hash.hash = NULL; //使用通配hash 35 hash.temp_pool = ha.temp_pool; 36 if (ngx_hash_wildcard_init(&hash, ha.dns_wc_head.elts, 37 ha.dns_wc_head.nelts) 38 ... 39 addr->wc_head = (ngx_hash_wildcard_t *) hash.hash; 40 } 41 if (ha.dns_wc_tail.nelts) { //后綴通配 42 ngx_qsort(ha.dns_wc_tail.elts, (size_t) ha.dns_wc_tail.nelts, 43 sizeof(ngx_hash_key_t), ngx_http_cmp_dns_wildcards); 44 hash.hash = NULL; //使用通配hash 45 hash.temp_pool = ha.temp_pool; 46 if (ngx_hash_wildcard_init(&hash, ha.dns_wc_tail.elts, 47 ha.dns_wc_tail.nelts) 48 ... 49 addr->wc_tail = (ngx_hash_wildcard_t *) hash.hash; 50 } 51 ... 52 }

上面代碼主要就是將每個address:port對應的所有域名與域名所在的虛擬主機配置信息建立hash映射,這樣就可以通過域名快速找到域名所在的虛擬主機配置信息。有關nginx的hash可以參考?nginx源碼分析之hash的實現?這篇文章。下面再看下ngx_http_init_listening函數:

1 static ngx_int_t 2 ngx_http_init_listening(ngx_conf_t *cf, ngx_http_conf_port_t *port) 3 { 4 ... 5 addr = port->addrs.elts; 6 last = port->addrs.nelts; 7 if (addr[last - 1].opt.wildcard) { 8 addr[last - 1].opt.bind = 1; 9 bind_wildcard = 1; 10 11 } else { 12 bind_wildcard = 0; 13 } 14 i = 0; 15 while (i < last) { //last代表的是address:port的個數 16 //忽略隱式綁定 17 if (bind_wildcard && !addr[i].opt.bind) { 18 i++; 19 continue; 20 } 21 //這個函數里面將會創建,并且初始化listen結構,這個listen已經存放在cycle結構的listen數組中 22 ls = ngx_http_add_listening(cf, &addr[i]); 23 if (ls == NULL) { 24 return NGX_ERROR; 25 } 26 hport = ngx_pcalloc(cf->pool, sizeof(ngx_http_port_t)); 27 ... 28 ls->servers = hport; 29 if (i == last - 1) { //將*:port和沒有顯式bind的address:port放在同一個listen中 30 hport->naddrs = last; 31 } else { 32 hport->naddrs = 1; 33 i = 0; //i重新賦值為0 34 } 35 switch (ls->sockaddr->sa_family) { 36 ... 37 default: /* AF_INET */ 38 if (ngx_http_add_addrs(cf, hport, addr) != NGX_OK) { //初始化虛擬主機相關的地址,設置hash等等. 39 return NGX_ERROR; 40 } 41 break; 42 } 43 addr++; 44 last--; 45 } 46 return NGX_OK; 47 }

? 這個函數就是遍歷某個端口port對應的所有address,如果所有address中不包含通配符,則對所有的address:port調用ngx_http_add_listening分配一個listen結構和ngx_http_port_t結構,并初始化它們。如果存在address包含通配符,則如果address:port需要bind,分配一個listen結構和ngx_http_port_t結構,并初始化它們,對所有address:port不需要bind的,它們和包含通配符*:port共同使用一個listen結構和ngx_http_port_t結構,并且listen結構中包含的地址是*:port,所以最好bind的地址是*:port。所有的listen都會存放在全局變量ngx_cycle的listening數組中,這樣后面就可以利用這些address:port信息建立每個套接字了。

建立監聽套接字

建立監聽套接字是在ngx_open_listening_sockets中完成,這個函數是在ngx_init_cycle中被調用的。

1 ngx_int_t 2 ngx_open_listening_sockets(ngx_cycle_t *cycle) 3 { 4 ... 5 reuseaddr = 1; 6 ... 7 log = cycle->log; 8 //嘗試5次 9 for (tries = 5; tries; tries--) { 10 failed = 0; 11 ls = cycle->listening.elts; 12 for (i = 0; i < cycle->listening.nelts; i++) { 13 ... 14 //創建socket 15 s = ngx_socket(ls[i].sockaddr->sa_family, ls[i].type, 0); 16 ... //設置socket 17 //綁定socket 18 if (bind(s, ls[i].sockaddr, ls[i].socklen) == -1) { 19 ... 20 } 21 ... 22 //設置socket為監聽套接字 23 if (listen(s, ls[i].backlog) == -1) { 24 ... 25 } 26 ls[i].listen = 1; 27 ls[i].fd = s; 28 } 29 30 if (!failed) { 31 break; 32 } 33 } 34 ... 35 }

這個函數就是遍歷listening數組,為每個listen結構創建監聽套接字。到目前為止,所有的網絡初始化部分就基本完成了,然后就是根據這些監聽套接字來獲取客戶端的連接請求,并處理這些請求了。怎樣獲取客戶端連接和nginx的進程模型和事件處理有關,進程模型和事件處理后面再貼文章分析。

總結

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

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

久久不色 | 国产精品一区专区欧美日韩 | 久久99精品久久久久蜜臀 | 国产资源精品在线观看 | 波多野结衣在线播放一区 | 日韩字幕在线观看 | 免费高清男女打扑克视频 | 国产精品久久电影网 | 六月色 | 美女一区网站 | www.久久精品视频 | 99精品国产在热久久 | 人人干干人人 | 久久免费公开视频 | 欧美精品九九 | 国产99久久99热这里精品5 | 国产成人久久精品77777综合 | 人人干人人干人人干 | 亚洲欧美激情精品一区二区 | 亚洲人在线7777777精品 | 伊人国产女 | 日日噜噜噜噜夜夜爽亚洲精品 | 99视频精品 | www婷婷| 亚洲免费不卡 | 天天爽天天碰狠狠添 | 一区二区三区免费在线观看视频 | 国产视频欧美视频 | 久久99精品热在线观看 | 久久婷婷丁香 | 又黄又刺激视频 | 亚洲成人国产精品 | 婷婷社区五月天 | 偷拍区另类综合在线 | 色av网站 | 日韩欧美一区二区三区视频 | 国产精品女教师 | 91手机视频 | 中文字幕免费观看全部电影 | 国产又黄又硬又爽 | 特级黄色电影 | 久久爱影视i| 久久久官网| 中文字幕一区二 | 在线观看国产 | 精品在线播放 | 91九色国产蝌蚪 | 亚洲一级黄色大片 | 在线观看你懂的网站 | 午夜在线免费观看视频 | 超碰电影在线观看 | 干 操 插 | 色狠狠干| 九九视频网站 | 亚洲jizzjizz日本少妇 | 国产黄色大片免费看 | 青草草在线视频 | 最近av在线| 99久久这里只有精品 | 色综合天天干 | 五月天久久综合网 | 香蕉视频网站在线观看 | 亚洲成aⅴ人在线观看 | 日日操天天操狠狠操 | 麻豆久久久久久久 | 激情网站 | 欧美va在线观看 | 日韩精品一区二区三区不卡 | 成人在线视频观看 | 亚洲v精品 | 亚洲成人av在线电影 | 亚洲精品国精品久久99热 | 日韩欧美有码在线 | 久久草草热国产精品直播 | 午夜三级影院 | 国产手机在线 | 免费视频国产 | 成人a免费看| 成年人黄色免费网站 | 开心激情五月网 | 91黄在线看 | 欧美天天综合网 | 久草精品免费 | 日韩免费视频一区二区 | 国产精品com | 久久色中文字幕 | 超碰人人做 | 在线观看一区 | 中文字幕999| 欧美综合在线视频 | 色狠狠综合天天综合综合 | 国产精品刺激对白麻豆99 | 日韩成人高清在线 | 4438全国亚洲精品在线观看视频 | 精品久久久久_ | 中文在线中文a | 国产高清av免费在线观看 | 国产精品久久一 | 午夜999| 在线观看黄网站 | 美女久久久久久久久久 | 日韩中文字幕免费视频 | 欧美成人h版电影 | 91大神精品视频在线观看 | 亚洲一级片免费观看 | 欧美在线a视频 | 九九视频精品免费 | 国产一级在线观看 | 91av视频| 性色va | 91精彩视频 | 中文字幕第一页在线播放 | 日韩欧美精品一区二区 | 成人av网站在线观看 | 亚洲伊人色 | 亚洲欧美日韩一级 | 欧美一区二区日韩一区二区 | 人人草在线视频 | 在线色吧 | 日韩免费一级a毛片在线播放一级 | 俺要去色综合狠狠 | 在线视频欧美日韩 | www.夜夜草| 麻花天美星空视频 | av免费观看网址 | 久久精国产 | 欧美日韩在线观看视频 | 91chinese在线 | 久久伦理电影网 | 久久不射电影院 | 国产高清黄 | 制服丝袜成人在线 | 国产福利在线 | 在线a亚洲视频播放在线观看 | 国产精品久久久久久久久久久久久久 | 国内精品视频在线 | 91精品在线免费观看视频 | 欧美地下肉体性派对 | 日韩精品中文字幕有码 | 色中色综合 | 亚洲精品国偷拍自产在线观看 | 天堂在线一区二区三区 | 狠狠的干狠狠的操 | 亚洲国产99 | 亚洲精品xxx| 在线超碰av | 亚洲精品视频第一页 | 中文字幕网站 | 中国一区二区视频 | 操操操天天操 | 玖玖视频国产 | 精品在线免费观看 | 在线中文字幕一区二区 | 国产精品免费观看国产网曝瓜 | 美女视频黄是免费的 | 国产做aⅴ在线视频播放 | 婷婷丁香色 | 2024国产在线 | 久久久观看| 西西4444www大胆视频 | 亚洲精品97 | 亚洲精品视频在线免费 | 五月天激情综合 | 亚洲精品久久久久999中文字幕 | 国产又粗又猛又黄又爽 | 亚洲视频免费在线观看 | 亚洲视频电影在线 | 韩日电影在线观看 | 91精品国产九九九久久久亚洲 | 久久久久国产一区二区三区四区 | www.av中文字幕.com | 中文字幕国语官网在线视频 | 欧美久草在线 | 亚洲精品美女视频 | 国产综合香蕉五月婷在线 | 国产在线精品一区二区三区 | 国产在线第三页 | 91av手机在线 | 国产午夜三级一二三区 | 婷婷激情在线观看 | 国产精品6999成人免费视频 | 国内精品久久久久久久影视简单 | 日韩在线观看视频网站 | 欧美日韩综合在线观看 | 天天操天天谢 | 国产高清在线a视频大全 | 日韩欧美电影网 | 99在线视频网站 | 狠狠色噜噜狠狠 | 欧美一区免费观看 | 欧美亚洲免费在线一区 | 91精品久久久久久综合乱菊 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国产中文字幕第一页 | 久久伦理 | 亚洲成人一二三 | 友田真希av | 天天操天天射天天爱 | 国产资源免费 | 日韩亚洲国产精品 | 欧美人人 | 婷婷色在线资源 | av黄色av | 99 久久久久| 日韩欧美精品在线视频 | 婷婷视频在线观看 | 一二三区视频在线 | 四虎海外影库www4hu | 韩国在线视频一区 | 久久亚洲婷婷 | 国产+日韩欧美 | 日韩成人中文字幕 | 国产成人福利在线观看 | 久久成人午夜视频 | 国产高清在线看 | 91日韩在线播放 | 国产一级特黄毛片在线毛片 | 西西人体www444| av理论电影 | 九九视频精品在线 | 天天射天天爽 | 一级片免费观看视频 | wwxxxx日本 | 亚洲欧洲美洲av | 国产精品乱码久久久久久1区2区 | 国产91精品久久久久 | 久久99在线观看 | 国产黄a三级三级三级三级三级 | 日本一区二区三区免费看 | 色老板在线 | 九九热精品国产 | 操久| 日本中文在线播放 | 国产乱视频 | 日韩亚洲国产中文字幕 | 国产一级黄色片免费看 | 国产亚洲精品女人久久久久久 | 日批视频在线 | 99成人精品| 久久激情综合网 | 97视频亚洲| 亚洲精品免费在线观看 | 日本少妇视频 | 青青草视频精品 | 亚洲在线日韩 | 国产亚洲人成网站在线观看 | v片在线看 | 色视频网站在线观看一=区 a视频免费在线观看 | 99精品色 | 国产香蕉在线 | 国产精品久久久久久久久免费 | 久久黄视频 | www蜜桃视频 | 亚洲爱av | 中文字幕电影高清在线观看 | 天天操天天操天天爽 | 国产成人精品综合 | 在线观看小视频 | 欧美aⅴ在线观看 | 西西444www大胆无视频 | 久久综合中文字幕 | se婷婷| 久久伦理电影网 | 韩国av在线播放 | 在线中文字幕视频 | 久久综合欧美 | 91福利社区在线观看 | 最新三级在线 | 五月开心网 | 免费在线观看日韩欧美 | 美女性爽视频国产免费app | 91在线超碰| 国产高清视频 | 日韩在线第一 | 久草在线视频国产 | 天天视频色版 | 狠狠色狠狠色综合系列 | 精品国产一区二区三区日日嗨 | 国产精品亚洲综合久久 | 99成人免费视频 | 欧美视频日韩视频 | 一区二区三区在线免费观看视频 | 二区三区精品 | 天天曰天天射 | 精品国产精品一区二区夜夜嗨 | 久久色中文字幕 | 欧美国产一区在线 | 中文字幕亚洲欧美日韩 | www.福利 | 在线观看激情av | 免费看黄网站在线 | 中文字幕在线视频一区 | 中文字幕国产一区 | 日本三级全黄少妇三2023 | www在线观看视频 | 国产精品第54页 | 四虎影视精品永久在线观看 | 在线最新av | 亚洲精品综合欧美二区变态 | 国产在线色站 | 国产精品中文 | 9热精品| 日韩资源在线观看 | 国产精品久久久久久久久久东京 | 99久久精品一区二区成人 | 香蕉视频亚洲 | 日韩精品中文字幕在线不卡尤物 | 在线综合 亚洲 欧美在线视频 | 99色| 91精品国产福利在线观看 | 999国产在线| 久久国内精品视频 | www亚洲精品| av中文字幕剧情 | 精品国产一区二区三区久久久蜜臀 | 一区二区三区免费 | 日韩v欧美v日本v亚洲v国产v | 国产亚洲精品久久久久5区 成人h电影在线观看 | 一二三区视频在线 | 最近日本中文字幕a | 精品一区二区在线观看 | 亚洲香蕉视频 | 精品免费久久久久久 | 又黄又爽又无遮挡的视频 | 色综合久久久久网 | 亚洲国产中文字幕在线视频综合 | 99久久精品日本一区二区免费 | 中文字幕日韩国产 | 国产一区二区高清视频 | 97碰碰精品嫩模在线播放 | 日韩av免费在线电影 | 国产精品久久久久久影院 | 超碰成人免费电影 | 波多野结衣资源 | 色婷婷综合成人av | 91黄色影视 | www.福利视频 | 久久免费视频在线观看30 | 在线观看理论 | 99色婷婷 | 久久网址 | 亚洲热久久 | 免费看的黄色录像 | 欧美午夜一区二区福利视频 | 午夜视频导航 | 精品久久久久国产免费第一页 | 日日骑 | 亚洲电影成人 | 久久国产精品99久久久久久丝袜 | 一级黄色在线免费观看 | 亚洲黄色高清 | 久久精品欧美 | 黄网站色成年免费观看 | 在线视频1卡二卡三卡 | 国产伦精品一区二区三区四区视频 | 免费视频a| 97视频在线免费 | 精品国产123| 中文字幕在线看视频 | 精品自拍av | 一区二区欧美在线观看 | 97香蕉久久国产在线观看 | 婷婷伊人五月 | 天天干夜夜 | 日韩精品久久久久久 | 91亚洲免费| 福利视频午夜 | 中文字幕影片免费在线观看 | 免费色视频网站 | 日韩大片免费观看 | 91在线免费播放视频 | 国产一级在线看 | 久久伊人婷婷 | 国产精品黄 | 99tvdz@gmail.com| 欧美黄网站 | 98福利在线| 久久精品之 | 精品99久久 | 乱男乱女www7788| 色综合久久88 | 超碰在线98 | 亚洲高清视频在线观看免费 | 午夜精品一区二区三区在线播放 | 九九免费观看视频 | 日韩性xxxx | 午夜影院在线观看18 | 日韩在线网址 | 亚洲码国产日韩欧美高潮在线播放 | 精品亚洲一区二区 | 成人久久18免费网站 | 国产黄色一级片在线 | 四虎成人精品永久免费av | 黄色午夜| 久久精品在线免费观看 | 国产精品免费小视频 | 精品高清美女精品国产区 | www.黄色片网站 | 日本中文在线播放 | 成人免费视频网址 | 337p日本欧洲亚洲大胆裸体艺术 | 亚洲欧洲精品一区二区精品久久久 | 亚洲精品久久在线 | 91在线看免费 | 在线观看视频日韩 | 激情片av | 最近中文字幕国语免费高清6 | 久久99在线观看 | 亚洲一区二区三区毛片 | 国产视频高清 | 中文字幕在线观看免费观看 | 国产精品观看在线亚洲人成网 | 国产xxxx做受性欧美88 | 九九久久精品视频 | 国产黄色一级片在线 | 久草免费福利在线观看 | 欧美日韩国产欧美 | 81国产精品久久久久久久久久 | 国产高清av免费在线观看 | 99精品视频在线观看播放 | 国产午夜免费视频 | 天天色天天射天天综合网 | 国产精品电影在线 | 欧美成人黄色 | 亚洲性xxxx | 麻豆免费视频网站 | 在线观看激情av | 婷婷丁香色 | 日韩精品久久久久久久电影99爱 | 久久综合婷婷国产二区高清 | 激情五月综合网 | 激情视频一区二区 | 成人片在线播放 | 午夜电影久久久 | 人人草人人做 | 久草在线免费看视频 | 激情六月婷婷久久 | 精品xxx| 天天操,夜夜操 | 国产精品国产三级国产aⅴ无密码 | 婷婷久久婷婷 | 啪啪免费视频网站 | 97网| 亚洲国产欧美在线看片xxoo | 天天综合精品 | 97色婷婷| 九九在线免费视频 | 热久久精品在线 | 久久伦理 | 日韩乱色精品一区二区 | 欧美日韩中文视频 | 四川bbb搡bbb爽爽视频 | 欧美黄色成人 | 亚洲.www | 国产亚洲欧美在线视频 | 免费网站在线 | 久久综合爱 | 超碰人人舔 | 狠狠的干狠狠的操 | 激情丁香综合五月 | 久久久久久久久久久免费 | 黄色三级视频片 | 一区二区三区免费在线播放 | 天堂在线一区 | 亚洲最大av网| 天天伊人网| 激情亚洲综合在线 | 一区二区三区精品久久久 | 米奇四色影视 | 日韩免费一区二区 | 国产成人精品日本亚洲999 | 亚洲永久国产精品 | 91看片淫黄大片一级在线观看 | 大片网站久久 | 激情综合五月婷婷 | 日韩在线高清 | 深夜免费福利在线 | 在线欧美最极品的av | 日韩久久精品一区二区三区下载 | 天天伊人狠狠 | 久久精品毛片 | 国产一区免费观看 | 手机av永久免费 | 免费在线观看黄 | 日韩在线色视频 | 天天操天天操天天操天天 | 国产高清视频在线观看 | av电影久久| 日韩欧美高清一区二区三区 | 又湿又紧又大又爽a视频国产 | 久久久www成人免费毛片麻豆 | 中文字幕在线成人 | 2017狠狠干 | 国产亚洲人成网站在线观看 | 在线看国产一区 | 免费观看91视频大全 | 国产一级片一区二区三区 | 三级免费黄色 | 久久久精品国产一区二区 | 国产色久 | 亚洲精品国产综合久久 | 久久久69 | www.伊人网 | 久99久精品 | 久久久99精品免费观看乱色 | 久久久久麻豆 | 波多在线视频 | 婷婷视频在线播放 | 美女黄久久 | 亚洲视频,欧洲视频 | 国产精品6999成人免费视频 | 黄色aa久久| 欧美中文字幕第一页 | 99久久久久久| 最近中文国产在线视频 | 婷婷视频在线观看 | 91麻豆精品国产91久久久使用方法 | 97视频免费观看 | 六月色| 欧美精品在线观看免费 | 国产99久久九九精品免费 | 欧美日韩国产伦理 | 丁香激情五月 | 日韩欧美一区二区在线观看 | 亚洲视频电影在线 | 中国一级特黄毛片大片久久 | 亚洲码国产日韩欧美高潮在线播放 | 亚洲天天 | 激情久久影院 | 天天色成人网 | 欧美精品久久久久 | 99视频精品全国免费 | 中文字幕91在线 | 五月色综合 | 欧美一级艳片视频免费观看 | 国产黄色美女 | 久章操| 日韩精品一区二区三区高清免费 | 婷婷久久网| 天天操夜夜操夜夜操 | 日韩精品免费一区二区在线观看 | www.午夜色.com | 免费观看www7722午夜电影 | www.婷婷com | 69国产精品视频免费观看 | 国产精品久久久久久久电影 | 天天爽天天爽 | 国产毛片久久久 | 人人干狠狠操 | 91久久人澡人人添人人爽欧美 | 欧美大片在线看免费观看 | 日韩一区二区在线免费观看 | 97品白浆高清久久久久久 | 99一级片 | 一区二区 不卡 | 国产美女视频免费观看的网站 | 中文字幕在线观看2018 | 日韩久久电影 | 国产精品久久久久影院日本 | 香蕉精品视频在线观看 | 色综合a| 国产h在线播放 | 91亚洲精品久久久蜜桃网站 | 人人舔人人爽 | 好看的国产精品视频 | 国产涩图 | 中文字幕丝袜一区二区 | 久久综合色天天久久综合图片 | 伊人五月天综合 | 在线影院 国内精品 | 最近免费观看的电影完整版 | 1024在线看片| 天天色天天操天天爽 | 在线观看免费成人 | 成人在线视频免费观看 | 天天操天天色综合 | 色综合咪咪久久网 | 波多野结衣一区 | 国产一级做a | 精品亚洲男同gayvideo网站 | av大全免费在线观看 | 久久国产热 | 日韩视频一区二区在线观看 | 一区二区三区视频网站 | 啪啪av在线 | 亚洲国产精品影院 | 日日麻批40分钟视频免费观看 | 免费观看性生交大片3 | 九九久久成人 | 国产精品久久久久久麻豆一区 | 午夜丰满寂寞少妇精品 | 婷婷综合影院 | 人人爱人人爽 | 精品视频免费观看 | 色婷婷综合久久久久 | 天天操天天操天天操天天 | 欧美精品午夜 | 国产传媒中文字幕 | 国产精品久久一区二区三区不卡 | 久久免费高清 | 中文字幕888 | 手机在线永久免费观看av片 | 欧美日韩在线精品 | www..com黄色片 | 免费精品在线 | 久草网站 | 91大神在线看 | 欧美精品久久久久性色 | 久草网视频 | 国产精品18久久久久久久久 | 精品国产一区二区三区男人吃奶 | 中日韩在线视频 | 狠狠狠色狠狠色综合 | 婷婷久久网| 成年人免费看的视频 | 91av视屏| 亚洲国产精品成人va在线观看 | 国产中文字幕视频在线观看 | 中文字幕精品一区二区三区电影 | 日本精品久久久一区二区三区 | 国产精品入口66mio女同 | 亚洲成aⅴ人片久久青草影院 | 久久少妇免费视频 | 久久一线 | 全黄网站 | 亚洲专区在线视频 | 一区二区激情视频 | 狠狠色丁香婷婷综合久久片 | 97人人添人澡人人爽超碰动图 | 国产视频导航 | 久久久久久久久久影视 | 久久er99热精品一区二区 | 日韩精品专区在线影院重磅 | 久久久久久国产精品 | 女人18片 | 国产福利一区二区三区在线观看 | 在线亚洲免费视频 | 亚洲综合五月天 | 91传媒在线播放 | 日日干综合 | 久久精品欧美视频 | 人人干97 | 日韩高清在线一区二区 | 日日天天 | 91爱爱中文字幕 | 不卡中文字幕av | 少妇18xxxx性xxxx片 | 在线观看 国产 | 亚洲精品国产免费 | 国产精品99久久久久久有的能看 | 精品国产成人av | 亚洲天堂网视频在线观看 | 日本最新中文字幕 | 亚洲天堂网视频 | 欧美精品一区二区三区四区在线 | 99精品乱码国产在线观看 | 亚洲va天堂va欧美ⅴa在线 | 人成午夜视频 | 国产一区成人 | 久久视频 | 成人激情开心网 | 日韩三级视频在线观看 | 亚洲精品在 | 久久人人插 | 久久久久免费网 | 一区二区三区影院 | 在线免费黄色片 | 99久久国产免费免费 | 欧美成人精品三级在线观看播放 | 国产精品久久久久久久免费观看 | 久久国产精品免费 | 亚洲在线黄色 | 日b视频在线观看网址 | 超碰97在线人人 | 精品一区二区久久久久久久网站 | 亚洲精品一区二区精华 | 亚洲欧美日韩国产精品一区午夜 | 91污污 | 国产午夜精品一区二区三区 | 日韩欧美精品免费 | 亚洲成人精品av | h久久| 亚洲一级久久 | 日韩久久精品一区二区三区下载 | 一级欧美一级日韩 | 香蕉视频在线看 | 免费av在线播放 | 韩国av免费观看 | 中文资源在线播放 | 精品一区 精品二区 | 午夜 免费 | 国产日本亚洲高清 | 久久er99热精品一区二区 | 中文字幕在线免费 | av观看免费在线 | 美女视频一区 | 热99在线视频 | 久久一区二区三区国产精品 | 久久伊99综合婷婷久久伊 | 久久综合九色综合久久久精品综合 | 三级在线视频播放 | 国产精品wwwwww | 91网址在线看 | 97超在线视频 | 国产1区在线观看 | 亚洲精品国产自产拍在线观看 | 精品国产诱惑 | 超碰在线人人爱 | 999久久久久久久久久久 | 黄色视屏免费在线观看 | 超碰在线人人草 | 国产麻豆果冻传媒在线观看 | 99人成在线观看视频 | 久久久久久久久久久成人 | 欧美日本一区 | 亚洲精品www久久久 www国产精品com | 久久一视频 | 夜夜躁日日躁 | 欧美一二在线 | 久久一区二区三区国产精品 | 久久五月婷婷丁香 | 久草资源在线 | 91一区二区三区久久久久国产乱 | 亚洲精选视频在线 | 四虎免费在线观看视频 | 樱空桃av | 亚洲视频 视频在线 | 婷婷久久国产 | 国产精品午夜av | 不卡国产视频 | 成人午夜精品福利免费 | 国产成人一区二区在线观看 | 亚洲影院国产 | 亚洲午夜精品久久久久久久久 | 在线中文字母电影观看 | 欧美一二三区播放 | 高清中文字幕av | 超碰在线成人 | 不卡电影免费在线播放一区 | 欧美精品被| 欧美日韩视频精品 | 免费黄色在线网址 | 久久成人麻豆午夜电影 | 国产一级电影在线 | 国内精品亚洲 | 国内精品视频在线播放 | 国产午夜三级 | 五月婷婷综合在线观看 | 午夜免费福利片 | 国产又粗又猛又黄又爽的视频 | 国产精品伦一区二区三区视频 | 97综合视频 | 久久精品国产美女 | 欧美日本中文字幕 | 欧美日韩中文字幕综合视频 | 国产小视频免费观看 | 美女福利视频 | 久久久久久久久毛片 | 国产免费中文字幕 | 久草视频观看 | 日韩高清在线观看 | 亚洲一区二区精品在线 | 欧美精品少妇xxxxx喷水 | 深夜免费福利视频 | 99热日本 | 欧美特一级片 | 18做爰免费视频网站 | 成人精品久久久 | 国产麻豆精品一区二区 | 97狠狠操| 欧美999 | 亚洲人人射 | 国产精品第7页 | 欧美一级欧美一级 | 女人久久久久 | 日韩电影在线观看中文字幕 | 97视频中文字幕 | 久久精品视频在线看 | 天天艹天天 | 欧美韩日精品 | 欧美另类网站 | 综合网婷婷| 欧美日韩三区二区 | 91麻豆国产| 狠狠操综合网 | 国内少妇自拍视频一区 | 精品女同一区二区三区在线观看 | 亚洲视频中文 | 午夜视频在线观看一区 | 91字幕 | 在线观看视频中文字幕 | 欧美极品xxxx | 亚洲女欲精品久久久久久久18 | 国产精品久久久久久久99 | 国产精品久久久久av免费 | 最近中文字幕视频网 | 婷婷深爱网 | 亚洲国产三级在线观看 | 国产中文视 | 亚洲天天在线日亚洲洲精 | 国产精品电影一区二区 | 中文字幕免费在线看 | 精品美女国产在线 | 欧美999| 国产成人高清 | 激情在线免费视频 | 日韩免费在线观看视频 | 久久国际影院 | 国产99久久久国产精品成人免费 | 亚洲精品视频在线观看网站 | 国产 日韩 在线 亚洲 字幕 中文 | 97成人精品视频在线播放 | 久久国产福利 | 国产黄网在线 | 91久草视频| 天天射天天操天天 | 亚洲高清视频在线观看 | 精品视频一区在线 | 香蕉视频最新网址 | 国产91精品一区二区绿帽 | 中文字幕在线专区 | 少妇bbw撒尿 | 久久久久久久久久久精 | av免费线看 | 国产亚洲情侣一区二区无 | 国产小视频免费观看 | 亚洲精品视频偷拍 | 18国产精品福利片久久婷 | 成人免费观看大片 | 精品一区二区在线观看 | 99精品免费久久久久久日本 | 亚洲dvd | 午夜精品影院 | 久久久久久久久久影视 | 久久96国产精品久久99软件 | av线上看 | 日韩理论片中文字幕 | 日韩精品在线看 | 91黄在线看 | 国产综合激情 | 五月婷丁香网 | 丁香电影小说免费视频观看 | 在线观看视频一区二区三区 | 337p日本欧洲亚洲大胆裸体艺术 | 国产精品理论片在线观看 | 亚洲九九影院 | 成人动漫一区二区三区 | 久久婷婷一区二区三区 | 在线观看中文字幕网站 | 成人污视频在线观看 | 久久精彩免费视频 | 天天插天天狠天天透 | 国产高清绿奴videos | 日韩视频在线播放 | 国产精品免费一区二区三区 | 亚洲精品videossex少妇 | 成人91av | 91视频 - x99av| 91漂亮少妇露脸在线播放 | 性色av免费在线观看 | 日韩激情精品 | 日韩av中文在线观看 | 99久久久久国产精品免费 | 日韩精品无| 成年免费在线视频 | 久久久久久久毛片 | 国产精品第54页 | 尤物一区二区三区 | 国产在线观看午夜 | 成人四虎 | 欧洲精品亚洲精品 | 丝袜网站在线观看 | 国产精品亚洲片夜色在线 | 国产精品欧美激情在线观看 | 欧美资源在线观看 | av在线之家电影网站 | 国产精品免费看久久久8精臀av | 国产一及片 | 国产亚洲婷婷免费 | 在线观看中文字幕一区二区 | 久久国产麻豆 | 久久免费黄色网址 | 国产一区二区精 | 91免费黄视频 | 五月天丁香综合 | 欧美综合色在线图区 | 不卡国产视频 | 日韩欧美视频在线免费观看 | 欧美一级性生活片 | 国产黑丝一区二区三区 | 麻豆mv在线观看 | 国产麻豆精品传媒av国产下载 | 三级黄色在线观看 | 日本aaaa级毛片在线看 | 在线视频 成人 | 欧美日韩一区二区在线 | 成人av一级片 | 久久精品伊人 | 永久免费在线 | 一区二区三区在线观看 | 成 人 黄 色 视频 免费观看 | 九九久久婷婷 | 久草视频免费看 | 91av在线电影 | 日韩网站在线免费观看 | 天天舔天天搞 | 欧美动漫一区二区三区 | 99re8这里有精品热视频免费 | 天堂av在线免费观看 | 一本色道久久综合亚洲二区三区 | av福利免费 | 亚洲专区视频在线观看 | 亚洲欧洲国产日韩精品 | 黄色三级在线看 | 96久久久| 夜夜操综合网 | 婷婷精品在线 | 成年人在线免费视频观看 | 国产高清视频在线 | 五月天激情视频在线观看 | 亚洲综合网站在线观看 | 在线国产日韩 | 久久经典视频 | 天天操综合网站 | 黄污网 | 在线免费av网站 | 久久丁香 | 在线视频观看你懂的 | 色婷婷视频| 久久激情综合网 | 99久久精品久久亚洲精品 | 成人禁用看黄a在线 | 国产一级在线观看 | 丁香电影小说免费视频观看 | 99r在线视频| 久久激情五月丁香伊人 | 视频二区在线视频 | av看片在线观看 | 日本成人a | 国产xxxx| 人人爽影院 | 久久免费在线 | 九九视频网 | 国产成人在线免费观看 | 五月天欧美精品 | 国产亚洲一级高清 | 人人爽影院 | 精品综合久久 | 色鬼综合网| 深夜国产福利 | 麻豆va一区二区三区久久浪 | 欧美日韩午夜爽爽 | 九九久久国产 | 日韩高清在线一区二区 | 99精品系列| 国产精品久久久区三区天天噜 | 日韩中文字幕国产精品 | 精品国产乱码久久久久久久 | 日韩精品一区二区三区在线播放 | 五月天激情婷婷 | 久久在线免费视频 | 亚洲劲爆av | 十八岁免进欧美 | 亚洲天堂首页 | 99久久这里有精品 | 国产一区二区三区四区在线 | 美女啪啪图片 | 久久久久久国产一区二区三区 | av手机在线播放 | 97电影手机 | 久久久精品一区二区 | 九九色在线 | 国产精品久久久久婷婷二区次 | 99精品在线直播 | 久久久久久国产精品亚洲78 | 日女人电影 | 日本aaaa级毛片在线看 | 免费碰碰| 欧美韩国日本在线 | 免费看黄色小说的网站 | 999久久久久久久久 69av视频在线观看 | 国产大陆亚洲精品国产 | 全久久久久久久久久久电影 | 国产综合精品久久 | 91丨九色丨高潮丰满 | 在线观看日韩专区 | 国产精品99久久久久 | 国产精品一区二区三区久久久 | av网站在线观看播放 | 久久免费精品一区二区三区 | 久在线| 韩国av免费观看 | 成人免费ⅴa | 精品一区免费 | 干亚洲少妇 | 欧美成人免费在线 | 成人一级在线观看 | 久久久免费看 |