成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > nginx中的listen指令實(shí)例解析

nginx中的listen指令實(shí)例解析

熱門標(biāo)簽:智能電話機(jī)器人坐席 外呼系統(tǒng)的經(jīng)營(yíng)范圍 涪陵商都400電話開通辦理 申請(qǐng)400電話價(jià)格多少 外呼系統(tǒng)不彈窗 安陽(yáng)ai電銷機(jī)器人軟件 云會(huì)外呼系統(tǒng) 柳州市機(jī)器人外呼系統(tǒng)報(bào)價(jià) 廈門營(yíng)銷外呼系統(tǒng)平臺(tái)

劇情回顧

上一篇文章我們分析了location指令的解析過程,簡(jiǎn)單的回顧一下這個(gè)內(nèi)容:每個(gè)location對(duì)應(yīng)一個(gè)ngx_http_core_loc_conf_t結(jié)構(gòu)體,所有的location通過一個(gè)雙向隊(duì)列連接在一起。數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜。

listen指令

nginx作為一個(gè)高性能的HTTP服務(wù)器,網(wǎng)絡(luò)的處理是其核心,了解網(wǎng)絡(luò)的初始化有助于加深對(duì)nginx網(wǎng)絡(luò)處理的了解。與網(wǎng)絡(luò)有關(guān)的配置命令主要有兩個(gè):listen和sever_name。listen命令設(shè)置nginx監(jiān)聽地址,對(duì)于IP協(xié)議,這個(gè)地址就是address和port,對(duì)于UNIX域套接字協(xié)議,這個(gè)地址就是path,一條listen指令只能指定一個(gè)address或者port,address也可以是主機(jī)名

從這一篇文章開始,我們分析listen指令的解析過程,listen指令的配置如下:從nginx.org的手冊(cè)中我們可以獲取listen的使用方法:

listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [ssl] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

一個(gè)listen指令攜帶的參數(shù)是很復(fù)雜的。不過,我們一般很少關(guān)注那些不太常用的參數(shù),以下是一些常用的配置方式:

listen 127.0.0.1:8000;
listen 127.0.0.1 不加端口,默認(rèn)監(jiān)聽80端口;
listen 8000
listen *:8000
listen localhost:8000

解析listen指令中的uri和端口

從上面的內(nèi)容知道,listen有多種用法,我們?cè)诮馕龅臅r(shí)候需要獲取到listen指令的端口號(hào)和uri部分,nginx提供了ngx_parse_url()方法來解析uri和port,該函數(shù)在解析listen指令的時(shí)候會(huì)被調(diào)用。

ngx_int_t
ngx_parse_url(ngx_pool_t *pool, ngx_url_t *u)
{
 u_char *p;
 size_t len;

 p = u->url.data;
 len = u->url.len;
 // 這里是解析unix domain的協(xié)議
 if (len >= 5 && ngx_strncasecmp(p, (u_char *) "unix:", 5) == 0) {
 return ngx_parse_unix_domain_url(pool, u);
 }
 // 解析IPV6協(xié)議
 if (len && p[0] == '[') {
 return ngx_parse_inet6_url(pool, u);
 }
 // 解析IPV4協(xié)議
 return ngx_parse_inet_url(pool, u);
}

我們使用的是IPV4協(xié)議,這里分析ngx_parse_inet_url()函數(shù)

// u.url = "80";
// u.listen = 1;
// u.default_port = 80;
static ngx_int_t
ngx_parse_inet_url(ngx_pool_t *pool, ngx_url_t *u)
{
 u_char *p, *host, *port, *last, *uri, *args;
 size_t len;
 ngx_int_t n;
 struct sockaddr_in *sin;
#if (NGX_HAVE_INET6)
 struct sockaddr_in6 *sin6;
#endif

 u->socklen = sizeof(struct sockaddr_in);
 sin = (struct sockaddr_in *) &u->sockaddr;
 sin->sin_family = AF_INET;// IPV4類型

 u->family = AF_INET; 

 host = u->url.data; // "80"

 last = host + u->url.len; // host的最后字符的位置

 port = ngx_strlchr(host, last, ':'); // 找到port, 這里為 NULL

 uri = ngx_strlchr(host, last, '/'); // 找到uri,這里為 NULL

 args = ngx_strlchr(host, last, '?'); // 找到參數(shù)args,這里為 NULL

 if (args) {
 if (uri == NULL || args < uri) {
 uri = args;
 }
 }

 if (uri) {
 if (u->listen || !u->uri_part) {
 u->err = "invalid host";
 return NGX_ERROR;
 }

 u->uri.len = last - uri;
 u->uri.data = uri;

 last = uri;

 if (uri < port) {
 port = NULL;
 }
 }

 if (port) {
 port++;

 len = last - port;

 n = ngx_atoi(port, len);

 if (n < 1 || n > 65535) {
 u->err = "invalid port";
 return NGX_ERROR;
 }

 u->port = (in_port_t) n;
 sin->sin_port = htons((in_port_t) n);

 u->port_text.len = len;
 u->port_text.data = port;

 last = port - 1;

 } else {
 if (uri == NULL) {

 if (u->listen) {

 /* test value as port only */

 n = ngx_atoi(host, last - host);

 if (n != NGX_ERROR) {

 if (n < 1 || n > 65535) {
 u->err = "invalid port";
 return NGX_ERROR;
 }

 u->port = (in_port_t) n;
 sin->sin_port = htons((in_port_t) n);

 u->port_text.len = last - host;
 u->port_text.data = host;

 u->wildcard = 1;

 return NGX_OK;
 }
 }
 }

 u->no_port = 1;
 u->port = u->default_port;
 sin->sin_port = htons(u->default_port);
 }

 len = last - host;

 if (len == 0) {
 u->err = "no host";
 return NGX_ERROR;
 }

 u->host.len = len;
 u->host.data = host;

 if (u->listen && len == 1 && *host == '*') {
 sin->sin_addr.s_addr = INADDR_ANY;
 u->wildcard = 1;
 return NGX_OK;
 }

 sin->sin_addr.s_addr = ngx_inet_addr(host, len);

 if (sin->sin_addr.s_addr != INADDR_NONE) {

 if (sin->sin_addr.s_addr == INADDR_ANY) {
 u->wildcard = 1;
 }

 u->naddrs = 1;

 u->addrs = ngx_pcalloc(pool, sizeof(ngx_addr_t));
 if (u->addrs == NULL) {
 return NGX_ERROR;
 }

 sin = ngx_pcalloc(pool, sizeof(struct sockaddr_in));
 if (sin == NULL) {
 return NGX_ERROR;
 }

 ngx_memcpy(sin, &u->sockaddr, sizeof(struct sockaddr_in));

 u->addrs[0].sockaddr = (struct sockaddr *) sin;
 u->addrs[0].socklen = sizeof(struct sockaddr_in);

 p = ngx_pnalloc(pool, u->host.len + sizeof(":65535") - 1);
 if (p == NULL) {
 return NGX_ERROR;
 }

 u->addrs[0].name.len = ngx_sprintf(p, "%V:%d",
  &u->host, u->port) - p;
 u->addrs[0].name.data = p;

 return NGX_OK;
 }

 if (u->no_resolve) {
 return NGX_OK;
 }

 if (ngx_inet_resolve_host(pool, u) != NGX_OK) {
 return NGX_ERROR;
 }

 u->family = u->addrs[0].sockaddr->sa_family;
 u->socklen = u->addrs[0].socklen;
 ngx_memcpy(&u->sockaddr, u->addrs[0].sockaddr, u->addrs[0].socklen);

 switch (u->family) {

#if (NGX_HAVE_INET6)
 case AF_INET6:
 sin6 = (struct sockaddr_in6 *) &u->sockaddr;

 if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
 u->wildcard = 1;
 }

 break;
#endif

 default: /* AF_INET */
 sin = (struct sockaddr_in *) &u->sockaddr;

 if (sin->sin_addr.s_addr == INADDR_ANY) {
 u->wildcard = 1;
 }

 break;
 }

 return NGX_OK;
}

這個(gè)函數(shù)就是解析了我們listen的地址和端口號(hào),我們的配置文件中,端口號(hào)為80,并沒有配置監(jiān)聽地址,所以u(píng)->wildcard = 1,表示這是一個(gè)通配符,要監(jiān)聽該服務(wù)器所有ip地址的這個(gè)端口號(hào)。

解析listen指令

下面從源碼中看一下listen的配置:

{ 
 ngx_string("listen"),
 NGX_HTTP_SRV_CONF|NGX_CONF_1MORE,
 ngx_http_core_listen,
 NGX_HTTP_SRV_CONF_OFFSET,
 0,
 NULL 
}

從配置文件中我們可以知道,listen只能出現(xiàn)在server 模塊中,可以帶有多個(gè)參數(shù)。

對(duì)應(yīng)的處理函數(shù)為 ngx_http_core_listen,下面我們分析這個(gè)函數(shù),我們刪除了一些進(jìn)行錯(cuò)誤判斷的代碼,

static char *
ngx_http_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
 ngx_http_core_srv_conf_t *cscf = conf;

 ngx_str_t *value, size;
 ngx_url_t u;
 ngx_uint_t n;
 ngx_http_listen_opt_t lsopt;

 cscf->listen = 1;

 value = cf->args->elts;

 ngx_memzero(&u, sizeof(ngx_url_t));

 u.url = value[1];
 u.listen = 1;
 u.default_port = 80;

 if (ngx_parse_url(cf->pool, &u) != NGX_OK) {
 return NGX_CONF_ERROR;
 }

 ngx_memzero(&lsopt, sizeof(ngx_http_listen_opt_t));

 ngx_memcpy(&lsopt.sockaddr.sockaddr, &u.sockaddr, u.socklen);

 lsopt.socklen = u.socklen;
 lsopt.backlog = NGX_LISTEN_BACKLOG;
 lsopt.rcvbuf = -1;
 lsopt.sndbuf = -1;
#if (NGX_HAVE_SETFIB)
 lsopt.setfib = -1;
#endif
#if (NGX_HAVE_TCP_FASTOPEN)
 lsopt.fastopen = -1;
#endif
 lsopt.wildcard = u.wildcard;
#if (NGX_HAVE_INET6)
 lsopt.ipv6only = 1;
#endif

 (void) ngx_sock_ntop(&lsopt.sockaddr.sockaddr, lsopt.socklen, lsopt.addr,
  NGX_SOCKADDR_STRLEN, 1);

 for (n = 2; n < cf->args->nelts; n++) {

 if (ngx_strcmp(value[n].data, "default_server") == 0
 || ngx_strcmp(value[n].data, "default") == 0)
 {
 lsopt.default_server = 1;
 continue;
 }
 // 這里面的其他代碼都是處理listen的各種參數(shù),對(duì)我們這里的分析沒有用處
 }

 if (ngx_http_add_listen(cf, cscf, &lsopt) == NGX_OK) {
 return NGX_CONF_OK;
 }

 return NGX_CONF_ERROR;
}

這個(gè)函數(shù)的整體流程就是解析listen指令的各個(gè)參數(shù),生成一個(gè) ngx_http_listen_opt_t,顧名思義,這個(gè)結(jié)構(gòu)體就是保存一些監(jiān)聽端口的選項(xiàng)(listening port option)。這里調(diào)用了一個(gè)函數(shù)ngx_parse_url(),我們上面已經(jīng)分析過了,這個(gè)函數(shù)的作用就是解析url中的address和port。

然后最重要的部分就要到了,ngx_http_core_listen()函數(shù)在最后面調(diào)用了ngx_http_add_listen()函數(shù),該函數(shù)是將listen的端口信息保存到ngx_http_core_main_conf_t結(jié)構(gòu)體的ports動(dòng)態(tài)數(shù)組中。

ngx_http_add_listen()函數(shù)

// cf: 配置結(jié)構(gòu)體
// cscf: listen指令所在的server的配置結(jié)構(gòu)體
// lsopt : ngx_http_core_listen()生成的listen option
ngx_int_t
ngx_http_add_listen(ngx_conf_t *cf, ngx_http_core_srv_conf_t *cscf,
 ngx_http_listen_opt_t *lsopt)
{
 in_port_t     p;
 ngx_uint_t     i;
 struct sockaddr   *sa;
 ngx_http_conf_port_t  *port;
 ngx_http_core_main_conf_t *cmcf;
 // 獲取 ngx_http_core_module模塊的main_conf結(jié)構(gòu)體ngx_http_core_main_conf_t
 cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
 // ports字段是一個(gè)數(shù)組
 if (cmcf->ports == NULL) {
  cmcf->ports = ngx_array_create(cf->temp_pool, 2,
          sizeof(ngx_http_conf_port_t));
  if (cmcf->ports == NULL) {
   return NGX_ERROR;
  }
 }

 sa = &lsopt->sockaddr.sockaddr;
 p = ngx_inet_get_port(sa);

 port = cmcf->ports->elts;
 for (i = 0; i < cmcf->ports->nelts; i++) {

  if (p != port[i].port || sa->sa_family != port[i].family) {
   continue;
  }

  /* a port is already in the port list */

  return ngx_http_add_addresses(cf, cscf, &port[i], lsopt);
 }

 /* add a port to the port list */

 port = ngx_array_push(cmcf->ports);
 if (port == NULL) {
  return NGX_ERROR;
 }

 port->family = sa->sa_family;
 port->port = p;
 port->addrs.elts = NULL;

 return ngx_http_add_address(cf, cscf, port, lsopt);
}

這個(gè)函數(shù)將端口號(hào)的信息保存到了 ngx_http_core_main_conf_t結(jié)構(gòu)體的port字段中。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

標(biāo)簽:巴中 南充 晉城 綏化 蕪湖 孝感 撫順 福州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《nginx中的listen指令實(shí)例解析》,本文關(guān)鍵詞  nginx,中的,listen,指令,實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《nginx中的listen指令實(shí)例解析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于nginx中的listen指令實(shí)例解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产精品美女高潮无套| 国产老头和老头xxxx×| 亚洲国产欧美在线人成| 在线观看一区二区三区视频| 亚洲一区二区观看| 婷婷综合社区| 深夜福利网站| 国产成人免费av| 污污的视频免费| 大地资源二中文在线影视观看| 在线播放亚洲一区| 91免费视频播放| 极品少妇一区二区三区精品视频| 国产成人免费视频一区| 精品国产区一区二区三区在线观看| 亚洲成在线观看| 久久久久久久久久国产| 成人午夜看片网址| 久久久久免费网站| 国产专区在线播放| 亚洲成人久久电影| 一区二区日本视频| 在线国产网址| 天堂中文字幕| 国产欧美一区二区三区米奇| heyzo高清中文字幕在线| 免费黄色av网站| 一区二区不卡| 91精品久久久久久久久久久久| 欧美激情久久久久久久久久久| 欧美人乱大交xxxxx| 午夜视频成人| 欧美极品xxxx| 中文字幕一区二区在线视频| 男女裸体影院高潮| 国产又色又爽又黄刺激在线视频| 久久av资源站| 欧美性猛交丰臀xxxxx网站| 国产蜜臀av在线一区二区三区| 中文字幕亚洲一区二区va在线| yellow在线观看网址| 亚洲精品一区二区精华| av福利在线播放| 少妇欧美激情一区二区三区| 日本高清在线观看wwwww色| 欧美成年黄网站色视频| 亚洲va中文字幕| 欧美日韩视频在线第一区| 国产欧美最新羞羞视频在线观看| 婷婷免费在线视频| aaa人片在线| 久久夜色精品国产欧美乱极品| 免费观看v片在线观看| 国产乱码精品一区二区三区四区| 精品精品国产毛片在线看| 在线看片黄色| 欧美日韩另类图片| 免费激情网址| 欧美精品尤物在线观看| 国产成人av电影免费在线观看| 国产精品国产成人国产三级| 精品粉嫩超白一线天av| 国产精品入口免费| 国产精品一区一区三区| 天天干天天爽| 十九岁完整版在线观看好看云免费| 性色av一区二区三区在线观看| 91丨九色丨蝌蚪丨少妇在线观看| 男人艹女人在线观看| 国产91在线播放九色快色| 国产亚洲第一的欧洲日产| 青青草综合网| 国产黄色小视频| 免费网站在线观看视频| 午夜天堂在线观看| 日本一区二区三区久久| 精品精品国产高清a毛片牛牛| 国产精品传媒在线观看| 久久久综合免费视频| 欧美6699| 亚洲成人短视频| 97色伦图片97色伦在线电影| 伊人222成人综合网| 不卡一区二区三区四区五区| 成人免费毛片嘿嘿连载视频| 日韩视频在线观看| 亚洲伦理中文字幕| 成人免费在线视频播放| 最新日韩在线视频| 国产一区视频导航| 成人免费毛片视频| 韩国在线视频一区| 欧美国产精品中文字幕| 久久久爽爽爽美女图片| 精品一区二区三区人妻| 亚洲第一区第一页| 性欧美videos白嫩| 久久精品国内一区二区三区水蜜桃| 国产九色精品成人porny| 亚洲精品动漫100p| 拍拍拍999自拍偷| 88xx成人免费观看视频库| 国产精品乱码久久久久久| 国产99对白在线播放| 亚洲综合色婷婷| 免费看一级大黄情大片| 一区二区福利视频| 国产精品蜜臀在线观看| 久久国产在线观看| 一本在线免费视频| 免费人成在线不卡| 日韩电影大全网站| 国产亚洲视频一区| 美日韩精品免费观看视频| 青青草原网站在线观看| 超碰97人人干| 午夜影院日韩| 中文字幕欧美国内| 7777kkk亚洲综合欧美网站| 天堂网在线观看国产精品| 国产精品成人va在线观看| 欧美黑人乱大交ⅹxxxxx| 欧美插插视频| 精品国产一区二区三区四区在线观看| 91女厕偷拍女厕偷拍高清| 亚洲美女在线免费观看| 最新中文字幕免费| 精品久久免费观看| 在线精品一区二区三区| hd100%videos日本| 国产成人av一区二区三区在线| 国产成人精品影视| 四虎影视成人精品国库在线观看| 久久久久久综合网| av无码精品一区二区三区宅噜噜| 国语对白做受xxxxx在线中国| 久久天天躁夜夜躁狠狠躁2022| 免费电影网站在线视频观看福利| 好看的av在线不卡观看| 久久亚洲欧洲| 成人影院在线视频| 欧美在线观看你懂的| 女仆av观看一区| 视频国产一区二区| 久久精品三级视频| 国模冰冰炮一区二区| 日韩视频在线播放| 91精品在线免费视频| 久久久国产精品成人免费| 成人午夜在线影视| 成人在线免费看片| 日韩欧美一区二区一幕| 三级在线观看网站| 国产乡下妇女三片| 日韩专区中文字幕| 日韩国产欧美精品一区二区三区| 在线免费观看色| 一区二区国产视频| 欧美精品777| 少妇毛片一区二区三区| 男人的天堂avav| 亚洲一区二区三区综合| 波多野结衣在线中文| 国产东北露脸精品视频| 亚洲精品午夜在线观看| 国产偷国产偷亚洲高清人白洁| 国产igao激情在线入口| 26uuu国产在线精品一区二区| 久久国产精品99国产| 91成人短视频在线观看| 精品视频123区在线观看| 亚洲欧美国内爽妇网| av亚洲在线观看| 97av影视网在线观看| 男人天堂一区二区| 俄罗斯嫩小性bbwbbw| 天天操天天射天天插| 国产激情三区| 国产精品草草| 日本xxxwww免费视频| 动漫美女无遮挡免费| 非洲一级黄色片| 美女黄色一级视频| 国产亚洲欧美久久久久| 四虎地址8848| 无码精品视频一区二区三区| 成年人视频网站免费| 亚洲免费黄色录像| 欧美交换配乱吟粗大25p| 婷婷5月激情5月| 911精品国产一区二区在线| 亚洲自拍偷拍色片视频| 国产免费一区二区三区最新6| 青娱乐极品盛宴一区二区| 国产视频久久| a在线播放不卡| 色伊人久久综合中文字幕| 久久免费福利| 日韩精品无码一区二区三区| 秋霞欧美一区二区三区视频免费| 亚洲午夜一二三区视频| 久久er99热精品一区二区| 欧美日韩一区二区免费视频| 国产精品美女久久久久人| 欧美色国产精品| 自拍偷拍亚洲色图欧美| 欧美理论电影在线精品| 成人c视频免费高清在线观看| 欧美xxxxx性| 红桃视频在线观看一区二区| 色爱综合av| 中文一区一区三区高中清不卡免费| 亚洲天堂一区二区在线观看| 性生交大片免费全黄| 精品一区二区在线欧美日韩| 欧美国产日韩在线观看成人| 国产精品久久久久白浆| 人人澡人人添人人爽一区二区| 超碰中文在线| 成人在线黄色| 特级黄国产片一级视频播放| 欧美日韩在线观看成人| 久久久久电影| 99精品视频在线观看免费播放| 国内外成人免费激情视频| 三级精品视频久久久久| 欧美日韩福利电影| 欧美在线综合| 99精品免费观看| 国产欧美精品一区二区三区-老狼| 日韩欧亚中文在线| 99热这里只有精品2| 亚洲色图35p| 亚洲精品成人区在线观看| 成人中文字幕视频| 国产精一品亚洲二区在线视频| av免费在线一区二区三区| 在线观看亚洲a| 精品51国产黑色丝袜高跟鞋| 中文字幕乱码人妻综合二区三区| 精品国产无码在线| 外国成人免费视频| 亚洲 欧美 日韩系列| 日韩av在线播放不卡| 国产不卡一二三| 国产精品夫妻激情| 亚洲黄色网址在线观看| 美女被羞羞网站| 欧美日韩破处视频| 日韩成人一区二区三区在线观看| 在线精品视频在线观看高清| 在线播放国产精品| 亚洲第一区在线观看| 91在线免费观看网站| 性感美女极品91精品| 成人午夜大片免费观看| 亚洲精品国产一区二区精华液| 日韩在线视频一区二区三区| 97超碰在线免费| 日韩中文字幕高清在线观看| 精品国产一区二区三区四区在线观看| 粉嫩av一区二区夜夜嗨| 丁香综合av| 精品动漫一区| 最新欧美人z0oozo0| 亚洲97在线观看| 午夜精品美女久久久久av福利| 亚洲一区在线观看免费观看电影高清| 性高潮久久久久久久久久| 伊人久久大香线蕉av一区| 欧美福利一区| 色婷婷综合中文久久一本| 极品白嫩丰满美女无套| 欧美精品少妇videofree| 午夜在线视频播放| 97久久夜色精品国产九色| 欧美成人vps| 中文av资源在线| 国产一区二区三区精品欧美日韩一区二区三区| 好吊日在线视频| 色婷婷在线影院| 永久免费成人代码| 99在线视频免费| 成人免费福利视频| 久久av在线| 日本亚洲欧美成人| 中文字幕一二区| 亚洲国产日韩欧美在线99| 神马久久久久久久久久久| 欧美精品一区二区三区在线播放| 欧美视频免费看欧美视频| 日韩欧美国产麻豆| 一本色道婷婷久久欧美| 1024手机看片国产| 欧美有码视频| 在线播放一区二区精品视频| 国产第一页浮力| 视频三区在线| 性欧美freehd18| 国产精品揄拍一区二区| av超碰在线观看| 波多野结衣在线高清| 欧美大交乱xxxxbbbb| 黄色免费观看视频网站| 日韩一区二区视频在线观看| 在线中文字幕不卡| www成人免费观看| 妖精视频一区二区三区| 精品一区二区三区视频在线播放| 中文字幕桃花岛| 国产精品欧美一区二区三区不卡| 亚洲国产精品成人无久久精品| 国产日韩v精品一区二区| 亚洲精品国产一区黑色丝袜| 亚洲色图综合久久| 黄色国产在线观看| 国精产品一区一区三区mba下载| 在线视频中文字幕第一页| 亚洲成人激情在线观看| 91在线高清免费观看| 永久免费网站视频在线观看| 亚洲影视九九影院在线观看| 国产精品21p| 激情五月***国产精品| 日韩伦理在线| 91精品国产综合久久香蕉的用户体验| 欧美oldwomenvideos| 羞羞视频在线观看免费|