整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          nginx+php如何執行請求?工作原理介紹

          nginx+php如何執行請求?工作原理介紹

          hp工作原理

          首先先了解下常聽說的cgi,php-cgi,fastcgi,php-fpm到底是什么關系,幫助了解php的工作原理

          cgi協議

          cgi協議用來確定webserver(例如nginx),也就是內容分發服務器傳遞過來什么數據,什么樣格式的數據

          php-cgi進程解釋器

          php-cgi是php的cgi協議進程解釋器,每次啟動時,需要經歷加載php.ini文件->初始化執行環境->處理請求->返回內容給webserver->php-cgi進程退出的流程

          fastcgi協議

          fastcgi協議是對cgi協議效率提升的補充,主要是針對每次請求過來時都需要啟動一個cgi解釋器進程的優化,不再需要cgi解釋器進程每次收到webserver請求后都需要重新加載php.ini文件和初始化執行環境

          php-fpm進程管理器

          php-fpm是對fastcgi協議的實現,是進程管理器,啟動時包括master和worker進程倆部分,master進程監聽端口,接收來自webserver請求,worker進程一般具有多個,每個worker進程都有一個cgi進程解釋器,用來執行php代碼

          php啟動和工作原理

          啟動phpfpm時,會啟動master進程,加載php.ini文件,初始化執行環境,并啟動多個worker進程。每次請求來時會將請求傳遞給worker進程進行處理

          php平滑重啟原理

          每次修改完php.ini配置并重啟后,會啟動新的worker進程加載新的配置,而之前已經存在的進程會在工作完成之后銷毀,因此實現平滑重啟

          nginx工作原理

          如果想弄明白nginx和php配合的原理,還需要先了解nginx的配置文件中的server部分

          server {

          listen 80; #監聽80端口,接收http請求

          server_name www.example.com; #一般存放網址,表示配置的哪個項目

          root /home/wwwroot/zensmall/public/; # 存放代碼的根目錄地址或代碼啟動入口

          index index.php index.html; #網站默認首頁

          #當請求網站的url進行location的前綴匹配且最長匹配字符串是該配置項時,按順序檢查文件是否存在,并返回第一個找到的文件

          location / {

          #try_files,按順序檢查文件是否存在,返回第一個找到的文件

          #$uri代表不帶請求參數的當前地址

          #$query_string代表請求攜帶的參數

          try_files $uri $uri/ /index.php?$query_string; #按順序檢查$uri文件,$uri地址是否存在,如果存在,返回第一個找到的文件;如果都不存在,發起訪問/index.php?$query_string的內部請求,該請求會重新匹配到下面的location請求

          }

          #當請求網站的php文件的時候,反向代理到php-fpm去處理

          location ~ \.php$ {

          include fastcgi_params; #引入fastcgi的配置文件

          fastcgi_pass 127.0.0.1:9000; #設置php fastcgi進程監聽的IP地址和端口

          fastcgi_index index.php; #設置首頁文件

          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #設置腳本文件請求的路徑

          }

          }

          上面server配置的整體含義是:每次nginx監聽到80端口的url請求,會對url進行location匹配。如果匹配到/規則時,會進行內部請求重定向,發起/index.php?$query_string的內部請求,而對應的location配置規則會將請求發送給監聽9000端口的php-fpm的master進程

          總結

          下面總結下最簡單的用戶請求流程:

          用戶訪問域名->域名進行DNS解析->請求到對應IP服務器和端口->nginx監聽到對應端口的請求->nginx對url進行location匹配->執行匹配location下的規則->nginx轉發請求給php->php-fpm的master進程監聽到nginx請求->master進程將請求分配給其中一個閑置的worker進程->worker進程執行請求->worker進程返回執行結果給nginx->nginx返回結果給用戶

          者:小不點啊

          來源:www.cnblogs.com/leeSmall/p/9356535.html

          一、Nginx Rewrite 規則


          1. Nginx rewrite規則


          Rewrite規則含義就是某個URL重寫成特定的URL(類似于Redirect),從某種意義上說為了美觀或者對搜索引擎友好,提高收錄量及排名等。


          語法:


          rewrite <regex> <replacement> [flag]
          關鍵字 || 正則 || 替代內容 || flag標記


          Rewrite規則的flag標記主要有以下幾種:


          • last :相當于Apache里的(L)標記,表示完成rewrite;
          • break:本條規則匹配完成后,終止匹配,不再匹配后面的規則
          • redirect:返回302臨時重定向,瀏覽器地址會顯示跳轉后的URL地址
          • permanent:返回301永久重定向,瀏覽器地址欄會顯示跳轉后的URL地址


          last和break用來實現URL重寫,瀏覽器地址欄URL地址不變


          2. Nginx rewrite例子


          a) 例如用戶訪問www.dbspread.com,想直接跳轉到網站下面的某個頁面,www.dbspread.com/new.index.html如何來實現呢?我們可以使用Nginx Rewrite 來實現這個需求,具體如下:在server中加入如下語句即可:


          效果圖如下:

                          rewrite     ^/$    http://www.dbspread.com/new.index.html  permanent;
          對應如下語法:
                          rewrite    <regex>    <replacement>                 [flag];
                          關鍵字      正則        替代內容                    flag標記

          正則表達式說明:

          *代表前面0或更多個字符                +代表前面1或更多個字符
          ?代表前面0或1個字符                  ^代表字符串的開始位置
          $代表字符串結束的位置                 。為通配符,代表任何字符

          b)例如多個域名跳轉到同一個域名,nginx rewrite規則寫法如下:


          格式:

          rewrite <regex> <replacement> [flag];
          關鍵字 || 正則 || 替代內容 || flag標記


          說明:


          • rewrite為固定關鍵字,表示開始進行rewrite匹配規則、
          • regex部分是 ^/(.*) ,這是一個正則表達式,匹配完整的域名和后面的路徑地址
          • replacement部分是http://www.dbspread.com/,是取自regex部分( )里的內容。匹配成功后跳轉到的URL。
          • flag部分 permanent表示永久301重定向標記,即跳轉到新的 http://www.dbspread.com/ 地址上



          二、Nginx 防盜鏈


          1. 什么是防盜鏈


          比如http://www.dbspread.com/download/av123.rmvb 這個視頻下載地址被其他網站引用,比如在www.test.com的index.html引用download/av123.rmvb就叫盜鏈,我們要禁止這種引用就叫做防盜鏈



          2. 怎么實現防盜鏈


          在nginx的nginx.conf的server里面配置如下代碼


          三、Nginx 動靜分離

          1. 動靜分離是什么

          Nginx動靜分離是讓動態網站里的動態網頁根據一定規則把不變的資源和經常變的資源區分開來,動靜資源做好了拆分以后,我們就可以根據靜態資源的特點將其做緩存操作,這就是網站靜態化處理的核心思路。

          2. 動靜分離原理圖

          3. Nginx動靜分離應該注意的地方

          1). WEB項目開發時要注意,將靜態資源盡量放在一個static文件夾2). 將static靜態資源文件夾放到Nginx可以取到的位置3). 頁面要建立全局變量路徑,方便修改路徑4). 修改nginx.conf的location, 匹配靜態資源請求

          4. Nginx動靜分離步驟

          4.1 準備一個靜態資源button.css

          body {
              margin: 10px 20px;
              text-align: center;
              font-family: Arial, sans-serif;
              background-color: red;
          }

          4.2 在/var/local下新建一個static文件夾用來存放靜態資源button.css

          4.3 在tomcat-8080/webapps/ROOT下的index.html里面引入button.css


          4.4 在nginx的nginx.conf中server節點新增靜態資源分離的配置


          對于Nginx基礎配置,推薦之前的:后端實踐:Nginx日志配置(超詳細)

          4.5 訪問頁面查看效果

          四、Nginx+keepalived 實現高可用

          1. keepalived是什么

          Keepalived軟件起初是專為LVS負載均衡軟件設計的,用來管理并監控LVS集群系統中各個服務節點的狀態,后來又加入了可以實現高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗余協議)功能。因此,Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件

          2. keepalived主要功能

          管理LVS負載均衡軟件實現LVS集群節點的健康檢查作為系統網絡服務的高可用性(failover)

          3. keepalived故障轉移

          Keepalived高可用服務之間的故障切換轉移,是通過 VRRP 來實現的。在 Keepalived服務正常工作時,主 Master節點會不斷地向備節點發送(多播的方式)心跳消息,用以告訴備Backup節點自己還活著,當主 Master節點發生故障時,就無法發送心跳消息,備節點也就因此無法繼續檢測到來自主 Master節點的心跳了,于是調用自身的接管程序,接管主Master節點的 IP資源及服務。而當主 Master節點恢復時,備Backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢復到原來的備用角色。

          說明:keepalived的主從切換和redis的主從切換是不一樣的,keepalived的主節點掛了以后,從節點變為主節點,之前的主節點恢復以后繼續做主節點。redis的主節點掛了以后,重新恢復以后變為從節點

          4. keepalived高可用架構示意圖

          說明:

          虛擬ip(VIP):192.168.152.200,對外提供服務的ip,也可稱作浮動ip192.168.152.130:nginx + keepalived master 主192.168.152.129:nginx + keepalived backup 從192.168.152.129:tomcat-8080192.168.152.129:tomcat-8081

          5. keepalived安裝

          環境準備:

          centos6、jdk

          虛擬ip(VIP):192.168.152.200,對外提供服務的ip,也可稱作浮動ip
          192.168.152.130:nginx + keepalived master 主
          192.168.152.129:nginx + keepalived backup 從
          192.168.152.129:tomcat-8080
          192.168.152.129:tomcat-8081

          nginx和tomcat的環境準備請查看我的前一篇關于nginx的文章

          5.1 安裝keepalived的步驟:

          注:192.168.152.129(keepalived從節點) 與 192.168.152.130(keepalived主節點)先安裝好nginx + keepalived

          下載壓縮包:

          wget www.keepalived.org/software/keepalived-1.3.5.tar.gz

          解壓縮:

          tar -zxvf keepalived-1.3.5.tar.gz

          進入解壓縮以后的文件目錄:

          cd keepalived-1.3.5

          編譯安裝:./configure --prefix=/usr/local/keepalived系統提示警告 *** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.yum -y install libnl libnl-devel再次執行./configure --prefix=/usr/local/keepalived系統提示錯誤 configure: error: libnfnetlink headers missingyum install -y libnfnetlink-devel再次執行./configure --prefix=/usr/local/keepalived

          make && make install

          到此keepalived安裝完成,但是接下來還有最關鍵的一步,如果這一步沒有做后面啟動keepalived的時候會報找不到配置文件的錯誤

          Configuration file '/etc/keepalived/keepalived.conf' is not a regular non-executable file

          安裝完成后,進入安裝目錄的etc目錄下,將keepalived相應的配置文件拷貝到系統相應的目錄當中。keepalived啟動時會從/etc/keepalived目錄下查找keepalived.conf配置文件

          mkdir /etc/keepalived

          cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived

          5.2 修改keepalived主節點192.168.152.130的/etc/keepalived/keepalived.conf配置文件


          5.3 修改keepalived從節點192.168.152.129的/etc/keepalived/keepalived.conf配置文件

          5.4 檢查nginx是否啟動的shell腳本


          /usr/local/src/check_nginx_pid.sh

          #!/bin/bash
          #檢測nginx是否啟動了
          A=`ps -C nginx --no-header |wc -l`        
          if [ $A -eq 0 ];then    #如果nginx沒有啟動就啟動nginx                        
                /usr/local/nginx/sbin/nginx                #重啟nginx
                if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重啟失敗,則停掉keepalived服務,進行VIP轉移
                        killall keepalived                    
                fi
          fi


          5.5 192.168.152.130(keepalived主節點)和 192.168.152.129(keepalived從節點)的nginx的配置文件nginx.conf

          user root root; #使用什么用戶啟動NGINX 在運行時使用哪個用戶哪個組
          worker_processes 4; #啟動進程數,一般是1或8個,根據你的電腦CPU數,一般8個
          worker_cpu_affinity 00000001 00000010 00000100 00001000; #CPU邏輯數——把每個進程分別綁在CPU上面,為每個進程分配一個CPU
          #pid /usr/local/nginx/logs/nginx.pid
          worker_rlimit_nofile 102400; #一個進程打開的最大文件數目,與NGINX并發連接有關系
          
          #工作模式及連接數上限
          events
          {
            use epoll; #多路復用IO 基于LINUX2.6以上內核,可以大大提高NGINX的性能 uname -a查看內核版本號
            worker_connections 102400; #單個worker process最大連接數,其中NGINX最大連接數=連接數*進程數,一般1GB內存的機器上可以打開的最大數大約是10萬左右
            multi_accept on;   #盡可能多的接受請求,默認是關閉狀態
          }
          
          #處理http請求的一個應用配置段
          http
          {
            #引用mime.types,這個類型定義了很多,當web服務器收到靜態的資源文件請求時,依據請求文件的后綴名在服務器的MIME配置文件中找到對應的MIME #Type,根據MIMETYPE設置并response響應類型(Content-type)
            include       mime.types; 
            default_type  application/octet-stream; #定義的數據流,有的時候默認類型可以指定為text,這跟我們的網頁發布還是資源下載是有關系的
            fastcgi_intercept_errors on; #表示接收fastcgi輸出的http 1.0 response code
            charset utf-8;
            server_names_hash_bucket_size 128; #保存服務器名字的hash表
            #用來緩存請求頭信息的,容量4K,如果header頭信息請求超過了,nginx會直接返回400錯誤,先根據client_header_buffer_size配置的值分配一個buffer,如果##分配的buffer無法容納request_line/request_header,那么就會##再次根據large_client_header_buffers配置的參數分配large_buffer,如果large_buffer還是無#法容納,那么就會返回414(處理request_line)/400(處理request_header)錯誤。
            client_header_buffer_size 4k; 
            large_client_header_buffers 4 32k;
            client_max_body_size 300m; #允許客戶端請求的最大單文件字節數 上傳文件時根據需求設置這個參數
            #指定NGINX是否調用這個函數來輸出文件,對于普通的文件我們必須設置為ON,如果NGINX專門做為一個下載端的話可以關掉,好處是降低磁盤與網絡的IO處理數及#系統的UPTIME
            sendfile on; 
            #autoindex on;開啟目錄列表訪問,適合下載服務器
            tcp_nopush on; #防止網絡阻塞
            #非常重要,根據實際情況設置值,超時時間,客戶端到服務端的連接持續有效時間,60秒內可避免重新建立連接,時間也不能設太長,太長的話,若請求數10000##,都占用連接會把服務托死
            keepalive_timeout 60;
            tcp_nodelay on; #提高數據的實時響應性
            client_body_buffer_size 512k; #緩沖區代理緩沖用戶端請求的最大字節數(請求多)
          
            proxy_connect_timeout   5; #nginx跟后端服務器連接超時時間(代理連接超時)
            proxy_read_timeout      60; #連接成功后,后端服務器響應時間(代理接收超時)
            proxy_send_timeout      5; #后端服務器數據回傳時間(代理發送超時)
            proxy_buffer_size       16k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區大小
            proxy_buffers           4 64k; #proxy_buffers緩沖區,網頁平均在32k以下的話,這樣設置
            proxy_busy_buffers_size 128k; #高負荷下緩沖大小
            proxy_temp_file_write_size 128k; #設定緩存文件夾大小,大于這個值,將從upstream服務器傳
          
            gzip on; #NGINX可以壓縮靜態資源,比如我的靜態資源有10M,壓縮后只有2M,那么瀏覽器下載的就少了
            gzip_min_length  1k;
            gzip_buffers     4 16k;
            gzip_http_version 1.1;
            gzip_comp_level 2; #壓縮級別大小,最小1,最大9.值越小,壓縮后比例越小,CPU處理更快,為1時,原10M壓縮完后8M,但設為9時,壓縮完可能只有2M了。一般設置為2
            gzip_types       text/plain application/x-javascript text/css application/xml; #壓縮類型:text,js css xml 都會被壓縮
            gzip_vary on; #作用是在http響應中增加一行目的是改變反向代理服務器的緩存策略
          
          #日志格式 
          log_format  main '$remote_addr - $remote_user [$time_local] "$request" ' #ip 遠程用戶 當地時間  請求URL
                           '$status $body_bytes_sent "$http_referer" ' #狀態  發送的大小  響應的頭
                   '"$http_user_agent" $request_time'; #客戶端使用的瀏覽器  頁面響應的時間
          
          #動態轉發         
          upstream web1 {
              #每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。配置了ip_hash就沒有負載均衡的效果了,每次訪問的都是同一個tomcat
              #ip_hash; 
              #轉發的后端的tomcat服務器,weight表示轉發的權重,越大轉發的次數越多,機器性能不一樣配置的weight值不一樣     
               server   192.168.152.129:8080 weight=1 max_fails=2 fail_timeout=30s;
               server   192.168.152.129:8081 weight=1 max_fails=2 fail_timeout=30s;
          }
          upstream web2 {
               server   192.168.152.129:8090 weight=1 max_fails=2 fail_timeout=30s;
               server   192.168.152.129:8091 weight=1 max_fails=2 fail_timeout=30s;
          }
          
          server {
              listen       80; #監聽80端口
              server_name  www.dbspread.com; #域名
              #rewrite規則
              index  index.jsp index.html index.htm;
              root   /usr/local/nginx/html; #定義服務器的默認網站根目錄位置
              #重定向
              if ($host != 'www.dbspread.com' ){ 
                      rewrite ^/(.*)$  http://www.dbspread.com/$1  permanent;
                      }
          
              #防盜鏈
               location ~* \.(rmvb|jpg|png|swf|flv)$ { #rmvb|jpg|png|swf|flv表示對rmvb|jpg|png|swf|flv后綴的文件實行防盜鏈
                          valid_referers none blocked  www.dbspread.com; #表示對www.dbspread.com此域名開通白名單,比如在www.test.com的index.html引用download/av123.rmvb,無效
                          root   html/b;
                          if ($invalid_referer) { #如果請求不是從www.dbspread.com白名單發出來的請求,直接重定向到403.html這個頁面或者返回403 
                               #rewrite ^/ http://www.dbspread.com/403.html;
                               return 403;
                          }
                  }
          
              #監聽完成以后通過斜桿(/)攔截請求轉發到后端的tomcat服務器
              location / 
                  {
                      #如果后端的服務器返回502、504、執行超時等錯誤,自動將請求轉發到upstream負載均衡池中的另一臺服務器,實現故障轉移。
                      proxy_next_upstream http_502 http_504 error timeout invalid_header;
                      proxy_set_header Host  $host; #獲取客戶端的主機名存到變量Host里面,從而讓tomcat取到客戶端機器的信息
                      proxy_set_header X-Real-IP $remote_addr; #獲取客戶端的主機名存到變量X-Real-IP里面,從而讓tomcat取到客戶端機器的信息
                      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                      #rewrite     ^/$    http://www.dbspread.com/new.index.html  permanent;#用戶訪問www.dbspread.com,想直接跳轉到網站下面的某個頁面:www.dbspread.com/new.index.html
                      proxy_pass http://web1; #跳轉到對應的應用web1
                  }
          
                 # location ~ .*\.(php|jsp|cgi|shtml)?$ #動態分離 ~匹配 以.*結尾(以PHP JSP結尾走這段)
                 #  {
                 #     proxy_set_header Host  $host;
                 #        proxy_set_header X-Real-IP $remote_addr;
                 #        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 #        proxy_pass http://jvm_web2;
                 # }
          
                  #靜態分離 ~匹配 以.*結尾(以html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css結尾走這段),當然不是越久越好,如果有10000個用戶在線,都保存幾個月,系統托跨
                  location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ 
                  {
                      root /var/local/static; #靜態資源存放在nginx的安裝機器上
                      #proxy_pass http://www.static.com; #靜態資源也可存放在遠程服務器上
                      expires    30d;
                  }
          
                  #日志級別有[debug|info|notice|warn|error|crit]  error_log 級別分為 debug, info, notice, warn, error, crit  默認為crit, 生產環境用error 
                  #crit 記錄的日志最少,而debug記錄的日志最多
                  access_log  /usr/local/logs/web2/access.log main;
                  error_log   /usr/local/logs/web2/error.log  crit;
          
              }
          
          
          }


          到這一步環境準備已完成,相關的配置也修改完成,下面我們來查看效果


          5.6 配置hosts域名映射


          192.168.152.200  www.dbspread.com

          注意:這里192.168.152.200 是keepalived里面virtual_ipaddress配置的虛擬ip

           virtual_ipaddress {
                  192.168.152.200 # 定義虛擬ip(VIP),可多設,每行一個
              }


          到這一步環境準備已完成,相關的配置也修改完成,下面我們來查看效果


          5.7 分別啟動192.168.152.129的兩個tomcat


          5.8 分別啟動192.168.152.130(keepalived主節點)和

          192.168.152.129(keepalived從節點)的keepalived的

          啟動命令:


          /usr/local/keepalived/sbin/keepalived  

          可以看到keepalived和nginx都啟動了

          在瀏覽器輸入www.dpspread.com域名訪問

          5.9 下面我們停掉主節點192.168.152.130的keepalived和nginx

          可以看到從節點變為主節點了

          在瀏覽器輸入地址www.dpspread.com訪問,可以看到訪問正常

          5.10 下面我們重新啟動主節點192.168.152.130

          可以看到主節點重新啟動以后變為主節點了

          之前變為主節點的從節點又變回從節點了

          到此keepalived+nginx的高可用完美完成

          HP 中的 include、require 函數可以調用其他php生成的內容,一般來說include (或 require)語句會獲取指定文件中存在的所有文本/代碼/標記,并復制到使用 include 語句的文件中。

          PHP include 和 require 語句:

          通過 include 或 require 語句,可以將 PHP 文件的內容插入另一個 PHP 文件(在服務器執行它之前)。

          include 和 require 語句是相同的,除了錯誤處理方面:

          require 會生成致命錯誤(E_COMPILE_ERROR)并停止腳本

          include 只生成警告(E_WARNING),并且腳本會繼續

          因此,如果要繼續執行,并向用戶輸出結果,即使包含文件已丟失,就使用 include。否則,在框架、CMS 或者復雜的 PHP 應用程序編程中,請始終使用 require 向執行流引用關鍵文件。這有助于提高應用程序的安全性和完整性,在某個關鍵文件意外丟失的情況下。

          包含文件省去了大量的工作。這意味著您可以為所有頁面創建標準頁頭、頁腳或者菜單文件。然后,在頁頭需要更新時,您只需更新這個頁頭包含文件即可。

          如:

          <html>

          <body>

          <h1>歡迎訪問我們的首頁!</h1>

          <?php require 'header.php';?>

          <p>一段文本。</p>

          <p>一段文本。</p>

          <?php include 'footer.php';?>

          </body>

          </html>

          以上便是小編對“php中怎么調用其他php生成的內容?”的大致介紹,希望對您有所幫助!


          主站蜘蛛池模板: 无码人妻一区二区三区在线视频| 国产一区二区三区亚洲综合| 3d动漫精品一区视频在线观看| 日韩三级一区二区三区| 国产一区中文字幕在线观看 | 任你躁国产自任一区二区三区| 国产一区二区三区免费| 国产一区二区三区小向美奈子| 亚洲综合一区二区三区四区五区 | 国产一区二区三区韩国女主播| 亚洲一区二区三区写真| 久久综合精品国产一区二区三区| 国产美女精品一区二区三区| 国产福利视频一区二区| 亚洲AV无一区二区三区久久| 国产AV午夜精品一区二区入口| 一区二区三区在线|欧| 3d动漫精品啪啪一区二区免费| 怡红院一区二区在线观看| 国产伦一区二区三区高清| 亚洲国产精品一区| 国产亚洲综合精品一区二区三区 | 日美欧韩一区二去三区| 国产高清不卡一区二区| 色老板在线视频一区二区| 亚洲综合无码AV一区二区| 秋霞午夜一区二区| 精品一区二区三区四区在线| 在线电影一区二区| 国产精品无圣光一区二区 | 亚洲国产成人久久一区二区三区| 久久影院亚洲一区| 大帝AV在线一区二区三区| 亚洲AV无码一区二区三区人| 久久精品一区二区三区不卡| 在线|一区二区三区四区| 国产亚洲一区二区三区在线| 国产一区精品视频| 蜜桃无码AV一区二区| 国产午夜精品一区二区三区不卡| 亚洲日韩AV一区二区三区中文 |