午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > nginx中的listen指令實例解析

nginx中的listen指令實例解析

熱門標簽:智能電話機器人坐席 外呼系統的經營范圍 涪陵商都400電話開通辦理 申請400電話價格多少 外呼系統不彈窗 安陽ai電銷機器人軟件 云會外呼系統 柳州市機器人外呼系統報價 廈門營銷外呼系統平臺

劇情回顧

上一篇文章我們分析了location指令的解析過程,簡單的回顧一下這個內容:每個location對應一個ngx_http_core_loc_conf_t結構體,所有的location通過一個雙向隊列連接在一起。數據結構比較復雜。

listen指令

nginx作為一個高性能的HTTP服務器,網絡的處理是其核心,了解網絡的初始化有助于加深對nginx網絡處理的了解。與網絡有關的配置命令主要有兩個:listen和sever_name。listen命令設置nginx監聽地址,對于IP協議,這個地址就是address和port,對于UNIX域套接字協議,這個地址就是path,一條listen指令只能指定一個address或者port,address也可以是主機名

從這一篇文章開始,我們分析listen指令的解析過程,listen指令的配置如下:從nginx.org的手冊中我們可以獲取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]];

一個listen指令攜帶的參數是很復雜的。不過,我們一般很少關注那些不太常用的參數,以下是一些常用的配置方式:

listen 127.0.0.1:8000;
listen 127.0.0.1 不加端口,默認監聽80端口;
listen 8000
listen *:8000
listen localhost:8000

解析listen指令中的uri和端口

從上面的內容知道,listen有多種用法,我們在解析的時候需要獲取到listen指令的端口號和uri部分,nginx提供了ngx_parse_url()方法來解析uri和port,該函數在解析listen指令的時候會被調用。

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的協議
 if (len >= 5 && ngx_strncasecmp(p, (u_char *) "unix:", 5) == 0) {
 return ngx_parse_unix_domain_url(pool, u);
 }
 // 解析IPV6協議
 if (len && p[0] == '[') {
 return ngx_parse_inet6_url(pool, u);
 }
 // 解析IPV4協議
 return ngx_parse_inet_url(pool, u);
}

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

// 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, '?'); // 找到參數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;
}

這個函數就是解析了我們listen的地址和端口號,我們的配置文件中,端口號為80,并沒有配置監聽地址,所以u->wildcard = 1,表示這是一個通配符,要監聽該服務器所有ip地址的這個端口號。

解析listen指令

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

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

從配置文件中我們可以知道,listen只能出現在server 模塊中,可以帶有多個參數。

對應的處理函數為 ngx_http_core_listen,下面我們分析這個函數,我們刪除了一些進行錯誤判斷的代碼,

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的各種參數,對我們這里的分析沒有用處
 }

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

 return NGX_CONF_ERROR;
}

這個函數的整體流程就是解析listen指令的各個參數,生成一個 ngx_http_listen_opt_t,顧名思義,這個結構體就是保存一些監聽端口的選項(listening port option)。這里調用了一個函數ngx_parse_url(),我們上面已經分析過了,這個函數的作用就是解析url中的address和port。

然后最重要的部分就要到了,ngx_http_core_listen()函數在最后面調用了ngx_http_add_listen()函數,該函數是將listen的端口信息保存到ngx_http_core_main_conf_t結構體的ports動態數組中。

ngx_http_add_listen()函數

// cf: 配置結構體
// cscf: listen指令所在的server的配置結構體
// 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結構體ngx_http_core_main_conf_t
 cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
 // ports字段是一個數組
 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);
}

這個函數將端口號的信息保存到了 ngx_http_core_main_conf_t結構體的port字段中。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

標簽:巴中 南充 晉城 綏化 蕪湖 孝感 撫順 福州

巨人網絡通訊聲明:本文標題《nginx中的listen指令實例解析》,本文關鍵詞  nginx,中的,listen,指令,實例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《nginx中的listen指令實例解析》相關的同類信息!
  • 本頁收集關于nginx中的listen指令實例解析的相關信息資訊供網民參考!
  • 推薦文章
    日韩精品电影在线观看| 91精品国产色综合久久不卡电影| 免费成人蒂法网站| 在线播放日韩专区| 蜜臀av性久久久久蜜臀av麻豆| av影片在线播放| 久久噜噜噜精品国产亚洲综合| 久久久亚洲综合| 久久精品黄色片| 杨幂一区欧美专区| 91精品国产乱| 久久久久在线| 最好看的中文字幕| 成人午夜黄色影院| 色婷婷一区二区三区四区| 久久久久久久久久99| 麻豆久久久9性大片| 欧美va在线播放| 国产乱码一区二区三区| 五月天综合视频| 精品国产一区二区三| 欧美一区欧美二区| 91在线观看高清| 99久久婷婷国产综合| 欧美精品亚洲精品| 亚洲图片制服诱惑| 91蜜桃免费观看视频| 精品成人久久久| 热久久精品免费视频| 国产精品亚洲第一区| 色婷婷国产精品综合在线观看| 久久中文精品| 中文字幕黄色网址| 中文字幕日韩精品一区二区| 欧美激情视频在线观看| 五月天网站亚洲| 蜜臀av国产精品久久久久| 日本女人性生活视频| 91九色丨porny丨国产jk| 欧美一级在线播放| 一本色道久久综合精品竹菊| 奇米精品一区二区三区在线观看 | 久久精品视频导航| 一区二区三区视频在线观看| 国模私拍视频在线| 中国美女黄色一级片| 日韩国产一级片| 欧美一级电影久久| 欧美精三区欧美精三区| 久久久久国产一区二区三区四区 | 日韩一区二区三区国产| 亚洲欧美日韩精品久久久久| 天堂成人在线观看| 一区二区成人免费视频| 8x8x成人免费视频| 欧美xxxx黑人又粗又长密月| 欧美人成在线视频| 日韩一级视频免费观看在线| 久久久久久久久久电影| 熟妇人妻系列aⅴ无码专区友真希 熟妇人妻av无码一区二区三区 | 午夜免费福利在线| 麻豆久久久9性大片| 欧美肥婆姓交大片| 国产欧美一区二区三区视频| 国产精品久久国产精品99gif| 成人免费在线看片| 国产欧美精品久久久| 国产成人a亚洲精品| 欧美大片顶级少妇| 亚洲va欧美va人人爽午夜| 久久免费电影网| 国产一区激情在线| 无码精品人妻一区二区| 综合久久中文字幕| 97久久久久久久| 欧美激情精品久久| 国产精品成人无码免费| 国产亚洲精品美女久久久m| 日韩色av导航| 亚洲精品电影网站| 欧洲永久精品大片ww免费漫画| 久久超碰亚洲| 国产又黄又爽免费视频| 日本人体一区二区| www.xxx亚洲| 天天做天天躁天天躁| 超碰97在线播放| 国产欧美日韩伦理| 九九视频这里只有精品 | 亚洲久久久久久| 国产aaaaa毛片| 国产成人精品视频免费看| 色乱码一区二区三在线看| www久久99| 国产日韩欧美中文在线播放| 欧美激情视频在线观看| 日韩有码在线电影| 亚洲偷欧美偷国内偷| 精品国产一区二区国模嫣然| 91成人在线免费观看| 丰满岳妇乱一区二区三区| 午夜视黄欧洲亚洲| 午夜电影网一区| 狠狠久久亚洲欧美专区| 天天av天天翘天天综合网色鬼国产| 亚洲欧美日韩一区二区| 亚洲日本va在线观看| 亚洲人成人一区二区在线观看| 中文在线资源观看网站视频免费不卡| 99re66热这里只有精品3直播| 99久久精品费精品国产一区二区 | 欧美在线视频精品| 人妻少妇精品一区二区三区| theav精尽人亡av| 亚洲av无日韩毛片久久| 成人av一级片| 亚洲电影一二三区| 成人三级视频在线观看一区二区 | 在线成人免费观看| 日韩午夜精品视频| 一本久久a久久精品亚洲| 国产精品国产三级国产普通话蜜臀 | 亚洲成人av免费观看| 日本网站免费在线观看| 午夜精品久久久久久久无码| 免费在线看黄色片| 亚洲 欧美 日韩 国产综合 在线| 一区二区三区电影| 异国色恋浪漫潭| 黄色三级视频片| 中文字幕一二三区| av黄色免费网站| 亚洲一区欧美在线| av综合在线观看| 狠狠色2019综合网| 自拍偷拍亚洲综合| 欧美亚洲一区三区| 日韩三级视频中文字幕| 精品五月天久久| 午夜精品久久久99热福利| 国产精品久久久久国产a级| 国产精品区一区二区三在线播放| 亚洲午夜精品久久久中文影院av | 99精品一区二区三区| 黄色成人av在线| 亚洲色图35p| 91色视频在线观看| 国产精品一区二区三区不卡 | 免费的一级黄色片| wwwwxxxx国产| 精品人妻aV中文字幕乱码色欲| 成人黄色在线网站| 欧美日韩国产经典色站一区二区三区 | 91成人免费观看网站| 视频一区视频二区视频三区高| 人妻少妇精品无码专区二区| 日本人亚洲人jjzzjjz| 亚洲系列第一页| 国内精品不卡在线| 欧美午夜宅男影院| 日韩在线观看高清| 日韩欧美一区二区三区久久婷婷| 可以在线看的av网站| 一区二区国产精品精华液| 久久久久国内| 亚洲久本草在线中文字幕| 亚洲人成免费电影| 久久久久久久久久久久久久一区| 中文精品无码中文字幕无码专区| 欧美黄色激情视频| 国产视频手机在线观看| 亚洲免费成人av| 亚洲欧美资源在线| 欧美午夜欧美| 日韩不卡av在线| 久久99久久久欧美国产| 亚洲精品乱码久久久久久久久| 亚洲黄色免费三级| 玛丽玛丽电影原版免费观看1977| 中文字幕免费在线播放| 久久精品毛片| 欧美一区二区三区四区在线观看| av一区二区三区免费| 久久精品国产精品亚洲色婷婷| 欧美另类69xxxx| 蜜桃av噜噜一区| 欧美一区二区在线免费播放 | 欧美日韩精品久久| 国产又粗又长又黄的视频| 免费一级片91| 91国产视频在线观看| 992tv成人免费视频| 99re8这里只有精品| 国产又黄又粗又爽| 99re这里只有精品6| 国产婷婷成人久久av免费高清 | 国产一区二区精品久久99| 国产视频91在线| 蜜臀a∨国产成人精品| 欧美一区二区视频在线观看| 欧美一级日本a级v片| 亚洲欧美精品aaaaaa片| 国产精品高潮呻吟| 国产日韩欧美综合| 国产探花在线播放| 久久久www免费人成精品| 欧美极品第一页| 四虎永久免费观看| 麻豆成人av在线| 久久伊人色综合| 亚洲五月天综合| 免费观看黄色av| 亚洲日本成人网| 玖玖爱视频在线| 日本中文在线一区| 久久精品国产亚洲7777| 无码专区aaaaaa免费视频| 中文字幕一区二区免费| 欧美一区二区三区免费观看视频| 欧美不卡三区| 国产一区二区三区黄片| 亚洲国产日韩欧美在线动漫| 亚洲天堂电影网| 国产成人三级一区二区在线观看一| 一本大道久久精品懂色aⅴ| 中文精品视频一区二区在线观看| 亚洲精品国产手机| 久久福利视频导航| 美国精品一区二区| 亚洲欧美日韩在线播放| 欧美三日本三级少妇三99| 超碰免费在线97| 蜜臀久久99精品久久久无需会员 | 免费人成在线观看视频播放| 久久精品72免费观看| 欧美专区第一页| 日韩少妇高潮抽搐| 日韩电影中文字幕在线| 色欲欲www成人网站| 国产精品国产三级国产三级人妇| 久久大香伊蕉在人线观看热2| 国产成人精品亚洲精品色欲| 久热国产精品视频| 亚洲午夜福利在线观看| 日本韩国精品在线| 另类小说第一页| 亚洲欧美怡红院| 国产亚洲欧美一区二区 | 一区二区三区 日韩| 亚洲视频每日更新| 五月天亚洲综合情| 亚州精品国产精品乱码不99按摩| 97精品一区二区视频在线观看| 国产无人区码熟妇毛片多| 欧美成人精品3d动漫h| 亚欧美一区二区三区| 欧美极品xxx| 最新天堂在线视频| 色婷婷久久久亚洲一区二区三区| 免费看一级一片| 国产精品xxxxx| 久久婷婷丁香| 99国产在线| 欧美—级在线免费片| 老女人性生活视频| 日韩av在线播放资源| 91中文字幕在线视频| 动漫精品视频| 国产欧美日韩激情| www.日本一区| 日韩一区二区三区视频在线| 亚洲国产精品午夜在线观看| 国产尤物99| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 精品乱码亚洲一区二区不卡| 一区二区三区四区视频在线| 国产黄色片av| 9.1国产丝袜在线观看 | 国产性xxxx高清| 欧美国产日韩二区| 五月天婷婷久久| 18久久久久久| 特级丰满少妇一级aaaa爱毛片| 欧美中文字幕视频在线观看| 亚洲色图21p| 国产免费一区二区三区| 懂色av噜噜一区二区三区av| 国产又黄又爽免费视频| 国产欧美一区二区精品婷婷| 精品久久久噜噜噜噜久久图片| 欧美在线高清视频| 国产探花在线观看视频| 激情久久av一区av二区av三区| 午夜不卡久久精品无码免费| 亚洲毛片在线观看| av 一区二区三区| 久久国产精品久久精品国产| 成人手机电影网| 中国黄色片一级| 国产一区二区三区视频 | www日韩在线观看| 日韩美女一区二区三区四区| 国产18无套直看片| 午夜精品一区二区三区在线| 欧美视频一二区| 日本一道在线观看| 亚洲第一福利视频在线| 少妇按摩一区二区三区| 在线看日韩欧美| 五月天激情开心网| 今天免费高清在线观看国语| 欧美精品乱人伦久久久久久| 免费黄色在线网址| 国产精品精品久久久| 欧美韩国日本一区| 亚洲av毛片基地| 91av在线播放视频| 成人午夜碰碰视频| 国产第一页视频| 日韩中文字幕在线免费观看| 美女网站色91| 日本www在线播放| 亚洲欧洲偷拍精品| 狠狠色狠狠色综合日日91app| 污视频网站观看| 欧美疯狂性受xxxxx另类| av毛片久久久久**hd| 中文字幕第3页| 国产精品久久久久久久久久久不卡 | 国产又爽又黄无码无遮挡在线观看| 97超级碰碰碰久久久| 国产精品视频一区二区三区不卡| 91人人澡人人爽| 国产精品久久久久久久电影| 亚洲精品视频在线| 日本a级片视频| 日韩成人在线资源| 日韩av在线免费播放| 欧美综合视频在线| 岛国av免费在线| 欧美日韩国产成人在线观看| 成人黄色小视频在线观看| 日本性高潮视频| 欧美一区二区三区在线播放 | 最新的欧美黄色| 久久精品一区二区三区四区| 国产无套粉嫩白浆内谢| 国内一区二区三区在线视频| 日韩一级免费观看| 性感美女一级片| mm131美女视频| 色姑娘综合网| 日韩中文字幕在线观看| 成人av电影在线| 国产精品suv一区二区三区| 亚洲免费av网| 精品国偷自产在线视频99| 国产精品视频麻豆| 国产精品区在线观看| 欧美成人免费高清视频| 欧美激情一区二区三区成人| 亚洲第一激情av| 蜜臀av性久久久久蜜臀aⅴ| 一级国产黄色片| 日韩高清dvd| 丝袜亚洲另类欧美重口| 一级精品视频在线观看宜春院 | 国产成人a亚洲精品| 日韩欧美亚洲一区二区| 久久久久久久av麻豆果冻| 91中文字幕在线播放| 国产老头和老头xxxx×| 欧美日韩无遮挡| 色婷婷综合久久久久中文字幕1| 亚洲日本青草视频在线怡红院| 中文字幕免费视频观看| 少妇人妻互换不带套| 国产精品国产三级欧美二区 | 中文字幕91视频| 国产免费黄色小视频| 91在线视频九色| 亚洲福利在线播放| 亚洲综合视频网| 国产精品综合在线视频| 精品一级少妇久久久久久久| 亚洲精品永久视频| 91香蕉视频网址| 亚洲伊人久久综合| 亚洲美女久久久| 亚洲欧美日韩国产综合| 国产一区二区视频在线播放| 中文字幕在线播出| 特大黑人巨人吊xxxx| av观看免费在线| 亚洲欧洲精品一区二区三区波多野1战4 | 免费一区二区三区| 欧美一区二三区| 精品成人一区二区| 亚洲人成电影网站色mp4| 狠狠久久亚洲欧美| 中文字幕第315页| 久久99久久久| 少妇户外露出[11p]| 99精品一区二区三区的区别| 国产精品精品视频一区二区三区| 尤物99国产成人精品视频| 欧美一区二区啪啪| 欧美日韩亚洲综合一区二区三区| 成人免费在线播放视频| 久久夜色精品一区|