精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 之 WSGI、uWSGI 和 Uwsgi 介紹

開發 前端
uwsgi 是一個與 uWSGI 服務器相關的協議。uwsgi 協議是一種二進制協議,它定義了 uWSGI 服務器與應用程序之間的通信協議。

一、概述

WSGI 、uWSGI 和 uwsgi 是三個相關的概念,它們是在 Web 應用程序開發中使用的不同的工具和協議。下面是它們的詳細介紹:

  • WSGI(Web Server Gateway Interface):WSGI 是一個 Python Web 應用程序與 Web 服務器之間的接口規范,它定義了應用程序和服務器之間的標準接口,使得應用程序可以在不同的 Web 服務器上運行。WSGI 規范規定了應用程序必須實現的接口方法和服務器需要支持的方法。WSGI 協議使得不同的 Python Web 框架(例如 Flask、Django 等)能夠在不同的 Web 服務器上運行,這些服務器可以是 Apache、Nginx 等。
  • uWSGI:uWSGI 是一個 Web 服務器,它是一個用 C 語言編寫的 Web 應用程序容器,支持運行 Python、Ruby、Perl 等多種編程語言。uWSGI 服務器可以作為一個獨立的應用服務器,也可以與其他 Web 服務器(如 Nginx、Apache)一起使用,通過 WSGI 協議與 Python 應用程序通信。
  • uwsgi:uwsgi 是一個與 uWSGI 服務器相關的協議。uwsgi 協議是一種二進制協議,它定義了 uWSGI 服務器與應用程序之間的通信協議。使用 uwsgi 協議,uWSGI 服務器可以與 Python 應用程序通信,而不需要像 CGI 那樣啟動一個新的進程來處理每個請求。uwsgi 協議允許 uWSGI 服務器與應用程序之間進行雙向通信,從而提高了性能。

因此,uWSGI 是一個 Web 服務器,可以通過 WSGI 協議與 Python 應用程序通信,并使用 uwsgi 協議進行通信。WSGI 是 Python Web 應用程序與 Web 服務器之間的接口規范,定義了應用程序和服務器之間的標準接口。而 uwsgi 則是 uWSGI 服務器與應用程序之間的二進制通信協議。

圖片

二、安裝 uwsgi 模塊

uWSGI 是一種 Web 服務器網關接口(Web Server Gateway Interface),它可以用于將 Python Web 應用程序與 Web 服務器(如 Nginx 或 Apache)集成在一起。

  • 在使用uWSGI模塊時,需要安裝uwsgi模塊,并在Python Web應用程序中導入uwsgi模塊,并使用uwsgi模塊提供的函數來配置和管理Web應用程序的運行。常見的uwsgi模塊函數包括uwsgi.optin()、uwsgi.route()、uwsgi.applications()等。
  • 另外,uWSGI模塊還提供了一些高級特性,如Master/Worker模式、進程管理、負載均衡、自動擴展等,使得Web應用程序可以更好地適應高并發和大流量的情況。

1)配置pip源

國內源地址:

  • pypi 清華大學源:https://pypi.tuna.tsinghua.edu.cn/simple
  • pypi 騰訊源:http://mirrors.cloud.tencent.com/pypi/simple
  • pypi 阿里源:https://mirrors.aliyun.com/pypi/simple/
mkdir  ~/.pip/
cat >~/.pip/pip.conf<<EOF
[global]
index-url = https://repo.huaweicloud.com/repository/pypi/simple
trusted-host = repo.huaweicloud.com
timeout = 120
EOF

2)安裝 uwsgi 模塊

# 安裝python3
yum -y install python3

yum -y install gcc-c++ -y 
yum -y install python3-devel -y

# 安裝 uwsgi flask 模塊
pip3 install uwsgi flask

# 查看版本
uwsgi --version

圖片

三、示例演示(uWSGI + Nginx 配置)

圖片

1)安裝 nginx

yum update -y
yum install epel-release
yum -y install nginx

2)創建 app.py 文件

創建一個名為 app.py 的文件,添加以下代碼:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

3)創建 uWSGI 配置文件

創建一個 uWSGI 配置文件,例如 uwsgi.ini,其中包含以下信息:

[uwsgi]
module = app:app 
# 相當于命令下面兩行
#wsgi-file = app.py # 項目入口文件
#callable = app #  flask應用對象
# 支持http+socket兩種方式,這里選用socket,也可以選擇http-socket,下面會講解這三種區別
# http = 127.0.0.1:8000
socket = 0.0.0.0:8000
# 也可以使用socket文件,在nginx配置文件中配置也對應,僅限本機通信,一般也很少使用
# socket = /app/myapp.sock

# 注意記得提前創建目錄
chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

uwsgi.ini常用配置參數詳解:

  • chdir=/xxx/xxx # 指定項目目錄, 這里寫上程序根目錄(即app.py文件所在目錄)對應上述目錄結構為src
  • home=/xxx/xxx # 指定虛擬環境變量
  • wsgi-file=xxx # 指定加載WSGI文件
  • socket=xxx # 指定uwsgi的客戶端將要連接的socket的路徑(使用UNIX socket的情況)或者地址(使用網絡地址的情況)。#socket協議,用于和nginx通訊,端口可配置成別的端口;如果有nginx在uwsgi之前作為代理的話應該配socket 如:socket=0.0.0.0:5000。當然也可以使用http-socket #而如果客戶端請求不經過(不搭建)Nginx代理服務器,服務請求直接到uwsgi服務器的話那么就配http。如:http=0.0.0.0:5000;IP和端口與項目啟動文件app.py中一致; 127.0.0.1雖然是表示本地IP,但想要在網絡上訪問必須設置host=0.0.0.0才不受IP限制。
  • callable=app # 這個 app 指的是 flask 項目啟動程序中定義的 flask name 的名字,我的啟動程序是 app.py , 里面定義的 flask 的名字是 app 。
  • module = mysite.wsgi # 加載一個WSGI模塊,這里加載mysite/wsgi.py這個模塊
  • `master=true # 指定啟動主進程
  • `processes=4 # 設置工作進程的數量
  • threads=2 # 設置每個工作進程的線程數
  • vacuum=true # 當服務器退出時自動刪除unix socket文件和pid文件
  • logfile-chmod=644 # 指定日志文件的權限
  • daemonize=%(chdir)/xxx.log # 進程在后臺運行,并將日志打印到指定文件
  • pidfile=%(chdir)/xxx.pid # 在失去權限前,將主進程pid寫到指定的文件
  • uid=xxx # uWSGI服務器運行時的用戶id
  • gid=xxx # uWSGI服務器運行時的用戶組id
  • procname-prefix-spaced=xxx # 指定工作進程名稱的前綴
  • chdir=/xxx/xxx # 指定項目目錄, 這里寫上程序根目錄(即app.py文件所在目錄)對應上述目錄結構為/opt/uwsgi/
  • listen = 120 # 設置socket的監聽隊列大小(默認:100)

4)啟動 uWSGI

在命令行中啟動 uWSGI:

uwsgi --ini uwsgi.ini
###或者
uwsgi uwsgi.ini

### 重啟
uwsgi --reload /opt/myapp/myapp.pid
###關閉
uwsgi --stop /opt/myapp/myapp.pid

圖片

【溫馨提示】其實也可以通過一條命令帶上對應的參數即可啟動,但是不推薦,測試可以。一般使用配置文件的方式啟動服務。

使用http協議啟動uwsgi的命令為:

uwsgi --http :8000 --ini uwsgi_conf.ini -d ./uwsgi.log --pidfile=uwsgi.pid
  • --http 指定用5800端口啟動http協議
  • --ini 指定上述的啟動配置文件
  • -d 指定uwsgi的log,方便我們調試
  • --pidfile 將啟動的進程號寫到uwsgi.pid文件中,方便我們在需要停止服務器時kill掉。

5)配置 Web 服務器

將 Web 服務器配置為反向代理 uWSGI,例如,在 Nginx 中,可以使用以下配置文件:

# vi /etc/nginx/conf.d/myapp.conf
server {
        listen 8080;
        server_name myapp.com;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8000;
        }
}

其中,uwsgi_params 文件包含以下內容:

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

圖片

【特別注意】uwsgi_params 在nginx conf文件夾下自帶,uwsgi_pass一定要跟uwsgi_conf.ini中寫的地址完全一致。

6)重啟 Web 服務器

重啟 Web 服務器以使配置生效。

# 重啟
systemctl restart nginx

# 如果是之前nginx服務已經存在,只是修改了配置,可建議使用reload加載
nginx -t && nginx -s reload
# 或者
systemctl reload nginx

訪問(瀏覽器訪問,curl訪問也行)

圖片

7)Nginx upstream 負載均衡

Nginx上游(upstream)是指一組后端服務器,Nginx可以與其通信并將客戶端請求轉發到這些服務器。換句話說,上游服務器是Nginx代理請求的后端服務器。

Nginx的upstream支持5種 分配方式,其中 輪詢(默認)、權重、IP散列這三種為Nginx原生支持的分配方式,fair 和 url_hash 為第三方支持的分配方式。

1、輪詢(默認)

輪詢是upstream的默認分配方式,即每個請求按照時間順序輪流分配到不同的后端服務器,如果某個后端服務器 down 掉后,能自動剔除。

upstream backend {
    server 192.168.182.110:8000;
    server 192.168.182.111:8000;
}

2、權重(weight)

輪詢的加強版,既可以指定輪詢比率,weight 和訪問幾率成正比,主要應用于后端服務器異質的場景下。

upstream backend {
    server 192.168.182.110:8000 weight=1;
    server 192.168.182.111:8000 weight=2;
}

3、IP散列(ip_hash)

每個請求按照訪問 Ip(即Nginx的前置服務器或客戶端IP)的 hash結果分配,這樣每個訪客會固定訪問一個后端服務器,可以解決 session 一致問題。

upstream backend {
    ip_hash;
    server 192.168.182.110:8000 weight=1;
    server 192.168.182.111:8000 weight=2;
}

先在另外一個節點上再起一個uWSGI服務,將上面示例配置修改:

# vi /etc/nginx/conf.d/myapp.conf
upstream backend {
    server 192.168.182.110:8000;
    server 192.168.182.111:8000;
}

server {
        listen 8080;
        server_name myapp.com;
        location / {
           include uwsgi_params;
           uwsgi_pass backend;
        }
}

192.168.182.110 節點 app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World 192.168.182.110!\n'

if __name__ == '__main__':
    app.run()

192.168.182.111 節點 app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World 192.168.182.111!\n'

if __name__ == '__main__':
    app.run()

驗證

curl  127.0.0.1:8080

圖片

從上圖可知,請求輪詢調度,這才是企業一般想要的效果,負載均衡。

8)http、http-socket 和 socket 區別

  • http和http-socket的區別在于,如果我們想直接將uwsgi用作服務器(例如Apache和nginx那樣)直接暴露在公網那么就使用http;
  • 如果有單獨的服務器(例如Apache或者nginx),由服務器將請求轉發給uwsgi處理,并且使用http協議,那么此時使用http-socket。
  • http: 自己會產生一個http進程(可以認為與nginx同一層)負責路由http請求給worker, http進程和worker之間使用的是uwsgi協議。
  • http-socket: 不會產生http進程, 一般用于在前端webserver不支持uwsgi而僅支持http時使用, 他產生的worker使用的是http協議。
  • 因此, http 一般是作為獨立部署的選項; http-socket 在前端webserver不支持uwsgi時使用, 如果前端webserver支持uwsgi, 則直接使用socket即可(tcp or unix)。

【1】socket 示例(uwsgi.ini):

[uwsgi]
module = app:app
#socket = 127.0.0.1:8000
socket = 0.0.0.0:8000

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

nginx配置

upstream backend {
    server 192.168.182.110:8000;
    server 192.168.182.111:8000;
}

server {
        listen 8080;
        server_name myapp.com;
        location / {
           include uwsgi_params;
           uwsgi_pass backend;
        }
}

【2】http 示例(uwsgi.ini):

[uwsgi]
module = app:app
socket = 0.0.0.0:8000

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

nginx配置

upstream backend {
    server 192.168.182.110:8000;
    server 192.168.182.111:8000;
}

server {
        listen 8080;
        server_name myapp.com;
        location / {
           include uwsgi_params;
           proxy_pass http://backend;
        }
}

【3】http-socket 示例(uwsgi.ini):

[uwsgi]
module = app:app
http = 0.0.0.0:8000

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

nginx配置

upstream backend {
    server 192.168.182.110:8000;
    server 192.168.182.111:8000;
}

server {
        listen 8080;
        server_name myapp.com;
        location / {
           include uwsgi_params;
           proxy_pass http://backend;
        }
}

9)TCP 與 uinx 區別

TCP和Unix套接字(Unix domain socket)是兩種不同類型的套接字。

  • TCP套接字是基于TCP/IP協議的網絡套接字,用于在網絡上進行進程間通信。TCP套接字需要指定IP地址和端口號,以便其他進程可以連接到該套接字進行通信。TCP套接字是一種跨網絡邊界的套接字,可以在不同的計算機之間進行通信。TCP套接字常用于客戶端/服務器架構中,如Web服務器、數據庫服務器等。
  • Unix套接字是基于Unix域套接字(Unix domain socket)的本地套接字,用于在同一臺計算機上進行進程間通信。Unix套接字只需要指定一個文件路徑,而不需要使用IP地址和端口號。Unix套接字是一種進程間通信(IPC)機制,它提供了高效、可靠和安全的進程間通信方式。Unix套接字通常用于本地服務器和本地客戶端之間的通信,例如X Window系統中的客戶端和服務器。

因此,TCP套接字用于在網絡上進行通信,而Unix套接字用于在同一臺計算機上進行通信。雖然TCP套接字可以通過網絡連接到不同的計算機,但是Unix套接字提供了更高效的進程間通信機制,并且更適合于需要在同一臺計算機上運行的進程間通信。

【TCP 示例】常用uwsgi.ini:

[uwsgi]
module = app:app
socket = 127.0.0.1:8000

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

【unix 示例】僅限于本機通信,很少使用。uwsgi.ini:

[uwsgi]
module = app:app
socket = /opt/myapp/myapp.socket

chdir = /opt/myapp
pidfile=/opt/myapp/myapp.pid
processes = 4
threads = 2
master = true
vacuum = true
py-autoreload = 1
daemonize = /tmp/uwsgi.log

nginx配置

server {
        listen 8080;
        server_name myapp.com;
        location / {
           include uwsgi_params;
           proxy_pass unix:///opt/myapp/myapp.sock;
        }
}

責任編輯:武曉燕 來源: 大數據與云原生技術分享
相關推薦

2023-03-28 14:58:22

Web工具開發

2024-05-13 09:38:14

PythonWeb開發WSGI

2010-10-13 09:21:39

2019-02-18 11:01:31

緩存Nginxuwsgi

2021-08-10 07:00:01

Redis單線程并發

2022-02-22 15:27:46

數據結構容器算法

2014-11-24 09:35:06

CGIFastCGIWSGI

2023-05-23 07:06:05

PythonPowerShell

2010-06-01 18:03:05

Rsync 使用

2021-09-16 10:05:09

鴻蒙HarmonyOS應用

2010-04-26 14:44:36

負載均衡設備

2023-06-20 15:45:15

服務卡片鴻蒙

2015-07-22 16:16:47

PythonScikit-Lear機器學習

2009-07-06 18:43:13

VB指針

2011-06-30 15:45:55

SEO

2011-07-13 11:12:43

C++MFC

2017-01-09 16:25:55

Android Shortcuts系統

2022-02-19 07:41:36

Bean注解項目

2011-03-29 09:56:35

Cacti界面

2010-06-01 17:44:14

Rsync 使用
點贊
收藏

51CTO技術棧公眾號

天堂av8在线| 涩涩涩999| 日韩经典在线观看| 女人av一区| 欧美日韩一区精品| 99在线观看视频免费| 日韩av资源| 久久99久久久久久久久久久| 高清一区二区三区日本久| 精品无码国产污污污免费网站| www欧美在线观看| 亚洲va韩国va欧美va精品| 欧洲亚洲一区| 超碰在线观看av| 日韩成人免费看| 国模精品一区二区三区色天香| 日韩一级av毛片| 国产精品xxx在线观看| 欧美日韩国产影片| 成人毛片视频网站| 黄色成人在线| 国产校园另类小说区| 成人xxxxx色| 11024精品一区二区三区日韩| 亚洲毛片视频| 欧美理论电影在线播放| 一道本在线观看| 第一区第二区在线| 欧美一二三在线| 国产一区二区在线免费播放| 高清在线视频不卡| 一区二区三区美女| 天天综合中文字幕| 成年午夜在线| 26uuu亚洲婷婷狠狠天堂| 91九色视频在线观看| 91国产免费视频| 久久精品一区二区国产| 91av在线视频观看| 日产欧产va高清| 精品91久久久久| 久国内精品在线| 国产精品嫩草影院俄罗斯| 精品午夜久久| 亚洲人成毛片在线播放| av网页在线观看| 黄色欧美在线| 亚洲国产精品va在线观看黑人| 农村末发育av片一区二区| 国产精品久久久久久av公交车| 欧美日韩精品一区二区在线播放| 日韩免费高清在线| 成人免费福利| 欧美视频一区二区在线观看| 国产裸体免费无遮挡| 欧美日韩五码| 欧美日韩在线观看一区二区| 精品999在线| 欧美黄色a视频| 欧美日韩和欧美的一区二区| www.这里只有精品| 亚州精品国产| 欧美一二三区在线| 日本xxxx免费| 欧美freesex8一10精品| 国产视频久久久| 51妺嘿嘿午夜福利| 欧美韩国日本在线观看| 久久精品中文字幕| 久久久一二三区| 99xxxx成人网| 国产91色在线|| 久久精品国产亚洲av麻豆蜜芽| 奇米色777欧美一区二区| 国产日韩综合一区二区性色av| 国产精品久久久久久无人区| 国产制服丝袜一区| 国产精品夜夜夜一区二区三区尤| 亚洲av成人精品一区二区三区在线播放 | 日韩情涩欧美日韩视频| 国产人妻精品午夜福利免费| 牛牛影视一区二区三区免费看| 精品一区二区亚洲| 美国精品一区二区| 韩日在线一区| 国产成人精品最新| 99久久夜色精品国产亚洲| 成熟亚洲日本毛茸茸凸凹| 精品一区日韩成人| 91精品大全| 一区二区三区四区亚洲| 浮妇高潮喷白浆视频| 色8久久影院午夜场| 欧美一级国产精品| 成都免费高清电影| 欧美一区二区三区另类| 日本在线观看天堂男亚洲 | 欧美bbbxxxxx| 色欧美88888久久久久久影院| 亚洲a级黄色片| 噜噜噜狠狠夜夜躁精品仙踪林| 在线观看欧美视频| av资源吧首页| 久久精品999| 精品人伦一区二区三区 | 久久久免费电影| 天天综合久久综合| 成人黄页在线观看| 亚洲午夜精品久久久久久浪潮| 啦啦啦中文在线观看日本| 91国偷自产一区二区开放时间| 91在线第一页| 精品日韩一区| 欧美中文字幕视频| 亚洲福利在线观看视频| 中文字幕一区日韩精品欧美| 欧美日韩国产精品激情在线播放| 精品国产第一国产综合精品| 亚洲少妇中文在线| 成人免费视频视频| 婷婷五月色综合| 国产99re66在线视频| 欧美亚洲动漫精品| 变态另类丨国产精品| 91精品秘密在线观看| 欧美制服第一页| 亚洲精品字幕在线观看| 中文字幕一区二| 99精品免费在线观看| 97se亚洲国产一区二区三区| 色狠狠av一区二区三区香蕉蜜桃| 天堂网中文字幕| 成熟亚洲日本毛茸茸凸凹| 一区二区三区四区欧美| 秋霞国产精品| 国内外成人在线| 日韩av在线看| 欧洲猛交xxxx乱大交3| 免费成人美女在线观看.| 欧美综合77777色婷婷| 亚洲风情在线资源| 亚洲精品成人久久电影| 日本一区二区欧美| 成人在线一区二区三区| 日韩在线视频在线| 日韩一区二区三区高清在线观看| 日韩一区二区三区在线播放| 在线视频 中文字幕| 国产日韩欧美电影| www.色就是色| 久久性感美女视频| 国产精品一区二区三| 1769视频在线播放免费观看| 欧美色偷偷大香| 欧美精品日韩在线| 麻豆精品国产传媒mv男同| 亚洲欧美日韩在线综合 | 国产又粗又猛又黄又爽| 国产精品久久三区| 日韩成人精品视频在线观看| 久久久影院免费| 国产主播欧美精品| 在线h片观看| 精品国产网站在线观看| 日韩黄色a级片| 91色九色蝌蚪| 欧美日韩亚洲自拍| 不卡av一区二区| 成人在线播放av| 成人综合影院| 制服丝袜中文字幕一区| 国产人妻精品一区二区三区不卡 | ass极品水嫩小美女ass| 欧美视频成人| 欧美高清视频一区二区三区在线观看| 欧美黑人巨大xxxxx| 中文字幕欧美精品在线| 99精品人妻无码专区在线视频区| 亚洲六月丁香色婷婷综合久久| 日韩av成人网| 日日夜夜精品视频天天综合网| 尤物一区二区三区| 91精品国产自产精品男人的天堂| 91精品国产91久久久久久| 国产在线超碰| 日韩亚洲电影在线| 99超碰在线观看| 中文字幕一区二区三区在线播放| 中文字幕99页| 日韩精品欧美精品| 日韩精品免费一区| 国产不卡一区| av一本久道久久波多野结衣| 成人免费看视频网站| 久久精品成人一区二区三区| 日本波多野结衣在线| 欧美视频在线一区二区三区 | 天天av天天翘天天综合网色鬼国产| 一级片视频免费看| 国产成人午夜精品影院观看视频| 波多野结衣作品集| 欧美黄色一区| 色一情一乱一伦一区二区三区丨| 成人福利一区| 国产精品美女主播在线观看纯欲| 俺来俺也去www色在线观看| 一区国产精品视频| 蜜臀av免费在线观看| 欧美人妇做爰xxxⅹ性高电影| 日韩欧美中文字幕一区二区| 亚洲欧洲精品成人久久奇米网| 国产十八熟妇av成人一区| 老汉av免费一区二区三区| 国产特级淫片高清视频| 亚洲国产不卡| 亚洲草草视频| 伊人春色精品| 国产女人水真多18毛片18精品| av日韩一区| 国产精品高清在线| 黑森林国产精品av| 欧美精品久久久久a| 黄色免费在线观看网站| 亚洲香蕉成人av网站在线观看 | 日韩精品――色哟哟| 免费视频久久| 99久久免费观看| 999精品视频| 国产精品无码天天爽视频| 精品视频在线你懂得| 色婷婷国产精品综合在线观看| 国产精品精品软件男同| 国产亚洲成年网址在线观看| 国产白嫩美女无套久久| 大美女一区二区三区| 国产探花一区二区三区| 久久国产精品99久久人人澡| 欧美精品成人网| 亚久久调教视频| 免费成人午夜视频| 激情丁香综合| 免费网站永久免费观看| 欧美日韩福利| 国产日产欧美一区二区| 91精品国产自产在线观看永久∴| 亚洲精品在线免费| 色综合五月天| 亚洲一区二区三区涩| 欧美精品一区二区三区精品| 日韩av一区二区三区在线观看 | 日韩视频一区二区三区在线播放| 欧洲午夜精品久久久| 成a人片在线观看| 久久天天躁狠狠躁老女人| 精品人妻在线播放| 日本久久一二三四| 精品国产一区二区三区麻豆小说 | 97精品在线播放| 国产精品久久久久久久裸模| 欧美乱大交做爰xxxⅹ小说| 中文字幕一区二区三区四区不卡 | 十九岁完整版在线观看好看云免费| 亚洲第一av在线| 日日夜夜精品免费| 国产婷婷97碰碰久久人人蜜臀| 国产一级免费在线观看| 日韩中文字幕网| 宅男网站在线免费观看| 久久久久久久久久久成人| 极品视频在线| 国产精品v日韩精品| 亚洲电影二区| 国产精品久久国产三级国电话系列| 巨人精品**| 色之综合天天综合色天天棕色| 国产精品99久久| 美女黄色免费看| 久久精品网址| 亚洲精品视频三区| 不卡的av电影| 日韩福利在线视频| 夜夜嗨av一区二区三区四季av | 91国模少妇一区二区三区| 日本一区二区在线不卡| 欧美日韩国产黄色| 亚洲一区在线观看免费观看电影高清| 毛片视频网站在线观看| 精品视频一区三区九区| 风流老熟女一区二区三区| 亚洲欧美国产另类| 手机在线免费av| 国产97在线观看| 日本精品视频| 日本免费高清一区二区| 欧美暴力喷水在线| av动漫免费看| 国产精品综合久久| 国产又粗又猛又爽视频| 樱桃视频在线观看一区| 人人妻人人爽人人澡人人精品| 日韩一区二区三区三四区视频在线观看 | 校园春色综合网| 亚洲自拍第三页| 久久九九全国免费| 国产一级视频在线播放| 欧美精选一区二区| 日本a一级在线免费播放| 欧美成人精品一区| 欧美一级二级视频| 国产综合动作在线观看| 91tv官网精品成人亚洲| 亚洲爆乳无码专区| 成人久久18免费网站麻豆| 久久av红桃一区二区禁漫| 欧美午夜丰满在线18影院| 999国产精品视频免费| 亚洲四色影视在线观看| 91九色在线看| 99精彩视频| 亚洲精品二区三区| 天天爽夜夜爽一区二区三区| 国产高清不卡二三区| 美女网站视频色| 欧美中文字幕一二三区视频| 天堂中文资源在线观看| 欧美大片第1页| www.久久久.com| 亚洲人成网站在线观看播放| 首页国产欧美日韩丝袜| 波多野结衣影院| 亚洲国产wwwccc36天堂| 国产高清在线免费| 久久综合久中文字幕青草| 国产香蕉久久| 亚洲春色综合另类校园电影| 久久男女视频| 蜜桃传媒一区二区亚洲av| 亚洲va韩国va欧美va| 高潮一区二区三区乱码| 欧美人在线视频| 91久久精品无嫩草影院| 成人毛片100部免费看| 国产伦精一区二区三区| 特一级黄色录像| 日韩一区二区免费在线电影| 黄色免费网站在线| 亚洲永久免费观看| 你懂的国产精品永久在线| 天堂在线精品视频| 一区二区三区四区国产精品| 精品人妻无码一区二区三区蜜桃一 | 国产在线视频资源| 国产精品久久久久久久久久久久| 国产精品亚洲二区| 伊人国产在线视频| 国产精品短视频| 国产三级第一页| 欧美成人免费网| 中文字幕一区二区三区中文字幕| 欧美黄色免费网址| k8久久久一区二区三区| 国产精品视频123| 亚洲天堂成人在线| 亚洲我射av| 国产欧美久久久久| 91丨九色丨蝌蚪丨老版| 看黄色一级大片| 久久久999精品免费| 99国产精品久久一区二区三区| 3d动漫一区二区三区| 久久精品无码一区二区三区| 中文字幕在线观看免费| 久久最新资源网| 精品国内亚洲2022精品成人| 红桃av在线播放| 国产精品情趣视频| www视频在线| 日本高清+成人网在线观看| 在线三级电影| 日韩高清免费观看| 筱崎爱全乳无删减在线观看| 丝袜足脚交91精品| 国产黄色91视频| 日韩在线视频免费播放| 中文字幕日韩在线视频| 2021年精品国产福利在线| 日韩少妇内射免费播放| 国产精品乱码妇女bbbb| 国模私拍视频在线| 国产精品久久久亚洲| 亚洲国产精品一区| 免费一级特黄3大片视频| 精品久久人人做人人爰| 成人免费福利| 全黄性性激高免费视频| 国产精品免费观看视频| 天堂网av2014| 成人做爽爽免费视频| 久久精品欧洲| 九九九国产视频|