HTTPD-相關的配置

一次完整的HTTP請求處理過程:
1、建立連接:接收或拒絕鏈接請求
2、接受請求:接收客戶端請求報文中對某資源的一次請求的過程
Web訪問響應模型(Web I/O)
單進程I/O模型:啟動一個進程處理用戶請求,而且一次只處理一個,多個請
求被串行響應;
多進程I/O模型:并行啟動多個進程,每個進程響應一個鏈接請求;
復用I/O結構:啟動一個進程,同時響應N個鏈接請求;
實現方法:多線程模型和事件驅動;
多線程模型:一個進程生成N個線程,每線程響應一個連接請求;
事件驅動:一個進程處理N個請求。
復用的多進程I/O模型:啟動M個進程,每個進程響應N個連接請求,同時接收
M*N個請求。

3、處理請求:

服務器對請求報文進行解析,并獲取請求的資源及請求方法

等相關信息,根據方法,資源,首部和可選的主體部分對請求進行處理
元數據:請求報文首部
<method> <URL> <VERSION>
HEADERS 格式 name:value
<request body>
示例:
Host : www.magedu.com 請求的主機名稱
Server: Apache/2.4.7
HTTP常用請求方式,Method GET、POST、HEAD、PUT、DELETE、

TRACE、OPTIONS


4、訪問資源:
服務器獲取請求報文中請求的資源web服務器,即存放了 web資源的服
務器,負責向請求者提供對方請求的靜態資源,或 動態運行后生成的資
源 。
資源放置于本地文件系統特定的路徑:
DocRoot –> /var/www/html
/var/www/html/images/logo.jpg
http://www.magedu.com/images/logo.jpg
web服務器資源路徑映射方式:
(a) docroot
(b) alias
(c) 虛擬主機docroot
(d) 用戶家目錄docroot
5、構建響應報文:
一旦Web服務器識別除了資源,就執行請求方法中描述的動作,并返回響應報文。響應報文中包含有響應狀態碼、響應首部,如果生成了響應主體的話,還包括響應主體。
1)響應實體:如果事務處理產生了響應主體,就將內容放在響應報文中回送過去。響應報文中通常包括: 描述了響應主體MIME類型的Content-Type首部描述了響應主體長度的Content-Length 實際報文的主體內容
2)URL重定向:web服務構建的響應并非客戶端請求的資源 ,而是資源另外一個訪問路徑:
永久重定向:http://www.360buy.com
臨時重定向:http://www.taobao.com
3)MIME類型:
Web服務器要負責確定響應主體的MIME類型。有很多配置服務器的方法可以將MIME類型與資源管理起來 ;
魔法分類:Apache web服務器可以掃描每個資源的內容,并將其與一個已知模式表(被稱為魔法文件)進行匹配,以決定每個文件的MIME類型。這樣做可能比較慢,但很方便,尤其是文件沒有標準擴展名的時候;
顯式分類:可以對Web服務器進行配置,使其不考慮文件的擴展名或內容,強制特定文件或目錄內容擁有某個MIME類型。
類型協商: 有些Web服務器經過配置,可以以多種文檔格 式來存儲資源。在這種情況下,可以配置Web服務器,使其可 以通過與用戶的協商來決定使用哪種格式(及相關的MIME類型 )”最好”


6、發送響應報文

Web服務器通過連接發送數據時也會面臨與接收數據一 樣的問題。服務器可能有很多條到各個客戶端的連接,有些是空 閑的,有些在向服務器發送數據,還有一些在向客戶端回送響應 數據。服務器要記錄連接的狀態,還要特別注意對持久連接的處 理。對非持久連接而言,服務器應該在發送了整條報文之后,關 閉自己這一端的連接。對持久連接來說,連接可能仍保持打開狀 態,在這種情況下,服務器要正確地計算Content-Length首部 ,不然客戶端就無法知道響應什么時候結束了

7、記錄日志 

最后,當事務結束時,Web服務器會在日志文件中添加 一個條目,來描述已執行的事務

HTTPD介紹:
特性:
高度模塊化: core+modules
DSO:Dynamic Shared Object 動態加/卸載
MPM:multi-processing module 多路處理模塊
MPM工作模式:
prefork:多進程I/O模型,每個進程響應一個請求,默認模型 。
一個主進程:生成和回收n個子進程,創建套接字,不響應請求
多個子進程:工作work進程,每個子進程處理一個請求;系統初始 時,預先生成多個空閑進程,等待請求,最大不超過1024個 。
worker:復用的多進程I/O模型,多進程多線程,IIS使用此模型 。
一個主進程:生成m個子進程,每個子進程負責生成n個線程,每個 線程響應一個請求,并發響應請求:m*n
event:事件驅動模型(worker模型的變種)
一個主進程:生成m個子進程,每個進程直接響應n個請求,并發響 應請求:m*n,有專門的線程來管理這些keep-alive類型的線程,當有 真實請求時,將請求傳遞給服務線程,執行完畢后,又允許釋放。這樣 增強了高并發場景下的請求處理能力 。
httpd-2.2: event 測試版, centos6默認
httpd-2.4:event 穩定版,centos7默認
HTTPD安裝
版本:centos6:2.2
centos7:2.4
安裝方式:
rpm:centos發行版,穩定,建議使用
編譯:定制或特殊需求
Centos 6程序環境:httpd-2.2
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
檢查配置語法:

            httpd -t

            service httpd configtest

      進行語法檢測時,會報錯,雖然沒有影響,但是也不好看;解決方法:

            方法一:

                       HTTPD-相關的配置

HTTPD-相關的配置

方法二: vim /etc/hosts  進行本地地址解析

     HTTPD-相關的配置


服務腳本:/etc/rc.d/init.d/httpd

腳本配置文件:/etc/sysconfig/httpd
服務控制和啟動:
chkconfig httpd on|off
service {start|stop|restart|status|configtest|reload} httpd
站點網頁文檔根目錄: /var/www/html

模塊文件路徑: 

/etc/httpd/modules

/usr/lib64/httpd/modules
主程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.worker
/usr/sbin/httpd.event
主進程文件: /etc/httpd/run/httpd.pid
/var/run/httpd/httpd.pid
日志文件目錄:
/var/log/httpd
access_log: 訪問日志
error_log:錯誤 日志

幫助文檔包:

            httpd-manual

      如果上不了網時,可以手動安裝文檔包,進行查看


Httpd 2.2常見配置
模塊文件路徑:
/usr/lib64/httpd/modules
httpd配置文件的組成:
# grep “Section” /etc/httpd/conf/httpd.conf 主配置文件
### Section 1: Global Environment 全局環境匹配
### Section 2: ‘Main’ server configuration 主服務的的配置
### Section 3: Virtual Hosts 虛擬主機配置

配置格式:

directive + value 指令 + 值

directive: 不區分字符大小寫

value: 為路徑時,是否區分大小寫,取決于文件系統


下面先介紹一個小實驗,再介紹HTTPD的基本配置:

  

在客戶端機器連接服務器時,顯示出Apache版本信息,不安全。

HTTPD-相關的配置

       編輯HTTPD主配置文件,加上下面一行就可以了

      #vim /etc/httpd/conf/httpd.conf

       ServerTokens productonly(可以簡寫prod)

          service restart httpd

 HTTPD-相關的配置

HTTPD基本配置及用法:

1、切換工作模式:
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker

2、修改監聽的IP和Port
Listen [IP:]PORT

HTTPD-相關的配置

(1) 省略IP表示為0.0.0.0;表示監聽本機所有IP;
(2) Listen指令可重復出現多次
Listen 80
Listen 8080
(3) 修改監聽socket,重啟服務進程方可生效

4、MPM( Multi-Processing Module)多路處理模塊 :
prefork, worker, event(試驗階段)

httpd-2.2不支持同時編譯多個模塊,所以只能編譯時選定一個;rpm安裝的包提供三個二進制程序文件,

分別用于實現對不同MPM機制的支持

確認方法:
ps aux | grep httpd
默認為/usr/sbin/httpd, 即prefork模式
查看靜態編譯的模塊 :httpd -l
查看靜態編譯及動態裝載的模塊 :httpd –M
動態模塊加載:不需重啟即生效
動態模塊路徑 :/usr/lib64/httpd/modules/
更換使用的httpd程序:
vim /etc/sysconfig/httpd
HTTPD=/usr/sbin/httpd.worker
重啟服務生效
httpd.worker -l 查看
pstree -p |grep httpd 查看進程和線程
測試:yum install httpd-tools
ab -c 1000 -n 10000 http://192.168.164.129/

prefork的默認配置:

<IfModule prefork.c>

StartServers 8 開機啟動時,默認開啟8個進程

MinSpareServers 5 最小空閑進程

MaxSpareServers 20 最大空閑進程

ServerLimit 256 最多進程數,最大20000

MaxClients 256 最大并發

MaxRequestsPerChild 4000 子進程最多能處理的請求 數量。在處理MaxRequestsPerChild 個請求之后,

子進程將 會被父進程終止,這時候子進程占用的內存就會釋放(為0時 永遠不釋放)

</IfModule>

worker的默認配置:

<IfModule worker.c>

StartServers 4 開機啟動時,默認開啟4個進程

MaxClients 300 最大支持多少客戶端并發訪問

MinSpareThreads 25 最小的空閑線程

MaxSpareThreads 75 最大的空閑線程

ThreadsPerChild 25 每個子進程生成的線程數量

MaxRequestsPerChild 0 無限制

</IfModule>


5、DSO: Dynamic Shared Object 動態共享對象
加載動態模塊配置:
/etc/httpd/conf/httpd.conf
配置指令實現模塊加載格式:
LoadModule <mod_name> <mod_path>
模塊文件路徑可使用相對路徑:
相對于ServerRoot(默認/etc/httpd)指向的路徑而言:
/etc/httpd/modules/

示例:要使用某個某塊,需按照下面格式,加載到主配置文件里即可:

   LoadModule auth_basic_module modules/mod_auth_basic.so

6、定義’Main’ server的文檔頁面路徑 :
DocumentRoot “/path” 網站主頁目錄
文檔路徑映射:
DocumentRoot指向的路徑為URL路徑的起始位置

下面先介紹一下,什么是URL:

URL組成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params> ?<query>#<frag>
schame:方案,訪問服務器以獲取資源時要使用哪種協議
user:用戶,某些方案訪問資源時需要的用戶名
password:密碼,用戶對應的密碼,中間用:分隔
Host:主機,資源宿主服務器的主機名或IP地址
port:端口,資源宿主服務器正在監聽的端口號,很多方案有默認端口號
path:路徑,服務器資源的本地名,由一個/將其與前面的URL組件分隔
params:參數,某些方案用這個組件來指定輸入的參數,參數為名/值對,
URL中可多含多個參數,用;分隔 .
query:查詢,某些方案會用這個組件傳遞參數以激活程序,如數據庫,用
?分隔,多個查詢用&分隔
frag:片段,一小片或一部分資源的名字,此組件在客戶端使用,用#分隔

好了,通過以上已經了解了什么事URL了,下面介紹怎么設置主頁等相關操作:


實驗:更改HTTPD主頁;實驗環境在centos6.9主機上搭建的HTTPD服務,

          (主機IP:192.168.164.129)

        首先自定義一個主頁目錄以及文件:

HTTPD-相關的配置

#vim /etc/httpd/conf/httpd.conf
DocumentRoot “/app/website1”
#service httpd reload

訪問測試:

HTTPD-相關的配置

         如果以上自定義的主頁文件不存在時,會出現以下情景:

HTTPD-相關的配置

默認情況下,會在/var/www/html目錄下找index.html這個主頁文件,如果找不到,則顯示下圖主頁。
DirectoryIndex index.html index.html.var
Include conf.d/*.conf
下圖主頁文件:/etc/httpd/conf.d/welcome.conf

HTTPD-相關的配置

  如果welcome.conf這個文件也找不到,會出現下圖的情景:

 cd /etc/httpd/conf.d

         mv welcome.conf welcome.conf.bak

HTTPD-相關的配置

如果把主配置文件里的主頁目錄再改回去,

HTTPD-相關的配置

cd /var/www/html/
mv index.html b.html

HTTPD-相關的配置


下圖把主頁目錄下的文件都列出來了,不安全
vim /etc/httpd/conf/httpd.conf
Option -Indexes FollowSymLinks
service httpd reload

HTTPD-相關的配置


下圖中,再次訪問網站時,主目錄下的文件就顯示不了,變得安全點。

HTTPD-相關的配置

注意:SELinux和iptables的狀態

7、站點訪問控制常見機制
可基于兩種類型的路徑指明對哪些資源進行何種訪問控制
訪問控制機制有兩種:客戶端來源地址,用戶賬號
文件系統路徑:
<Directory “/path “>
</Directory>
<File “/path/file”>
</File>
<FileMatch “PATTERN”>
</FileMatch>
URL路徑:
<Location ” ” >
</Location>
<LocationMatch ” “>
….
</LocationMatch>
示例:
<FilesMatch “\.(gif|jpe?g|png)$”>
<Files “?at.*”> 通配符
<Location /status>
<LocationMatch “/(extra|special)/data”>
訪問控制機制:
基于來源地址
基于賬號
Directory中“基于來源地址”實現訪問控制
(1)Options: 后跟1個或多個以空白字符分隔的選項列表 在選項前的
+,- 表示增加或刪除指定選項
所有可用特性:Indexes Includes FollowSymLinks
SymLinksifOwnerMatch ExecCGI MultiViews
常見選項:
Indexes:指明的URL路徑下不存在與定義的主頁面資源相符的資源
文件時,返回索引列表給用戶 。沒寫時默認是不開啟的。

HTTPD-相關的配置


FollowSymLinks:允許訪問主頁目錄下的符號鏈接文件所指向的源文
件 ;沒寫時默認是開啟的。
None:全部禁用
All: 全部允許


(2) AllowOverride

與訪問控制相關的哪些指令可以放在指定目錄下的 .htaccess(由
AccessFileName指定)文件中,覆蓋之前的配置指令
只對<directory>語句有效
AllowOverride All: 所有指令都有效
AllowOverride None: .htaccess 文件里定義的策略無效
AllowOverride AuthConfig Indexes 除了AuthConfig 和
Indexes的其它指令都無法覆蓋

  示例:實現AllowOverride ,基于指定目錄.htaccess,以及FollowSymlinks的用法

         # vim /etc/httpd/conf/httpd.conf

HTTPD-相關的配置

 

touch /app/website1/.htaccess

HTTPD-相關的配置

HTTPD-相關的配置

  訪問測試,訪問軟鏈接,直接指向源文件的內容。

HTTPD-相關的配置


HTTPD-相關的配置


HTTPD-相關的配置
HTTPD-相關的配置
HTTPD-相關的配置
HTTPD-相關的配置
(3)基于來源地址的訪問控制機制
Order:定義生效次序;寫在最后面的表示默認法則
Order allow,deny    :默認拒絕
Order deny,allow    :默認允許

Allow from 

 Deny from

來源地址:IP
NetAddr: 172.16
172.16.0.0

172.16.0.0/16

具體用法:下圖中定義了order allow,deny先允許,后拒絕;根據法則后定義的生效

HTTPD-相關的配置

    #curl  http://192.168.164.29   是被拒絕訪問的

     

8、定義默認主頁面
DirectoryIndex index.html inex.html.var
9、日志設定
日志類型:
訪問日志 錯誤日志
錯誤日志:
ErrorLog logs/error_log
LogLevel warn 定義日志級別,默認值warn
loglevel 可選值: debug, info, notice, warn,error crit, alert, emerg
訪問日志: /var/log/httpd/access_log
定義日志格式:LogFormat format strings
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%
{User-Agent}i\”” combined
使用日志格式: CustomLog logs/access_log combined
參考幫助: http://httpd.apache.org/docs/2.2/mod/mod_log_config
.html#formats
%h 客戶端IP地址
%l 遠程用戶,啟用mod_ident才有效,通常為減號“-”
%u 驗證(basic,digest)遠程用戶,非登錄訪問時,為 一個減號“-”
%t 服務器收到請求時的時間
%r First line of request,即表示請求報文的首行;記錄了 此次請求
的“方法”,“URL”以及協議版本
%>s 響應狀態碼
%b 響應報文的大小,單位是字節;不包括響應報文http首部
%{Referer}i 請求報文中首部“referer”的值;即從哪個頁 面中的超鏈接跳
轉至當前頁面的
%{User-Agent}i 請求報文中首部“User-Agent”的值;即 發出請求的應
用程序
10、定義路徑別名
格式: Alias /URL/  “/PATH/”
DocumentRoot “/www/htdocs”
http://www.magedu.com/download/bash.rpm
==>/www/htdocs/download/bash.rpm


Alias /download/    “/rpms/pub/”

http://www.magedu.com/download/bash.rpm
==>/rpms/pub/bash.rpm


http://www.magedu.com/images/logo.png

==>/www/htdocs/images/logo.png

注意:以上紅色字體標識,是一一對應的,注意/路徑和別名的區分。

11、設定默認字符集
AddDefaultCharset UTF-8
中文字符集:GBK, GB2312, GB18030
12、基于用戶的訪問控制
認證質詢:WWW-Authenticate:響應碼為401,拒絕客戶端請求,并說明要求客戶端提供賬號和密碼
認證:Authorization:客戶端用戶填入賬號和密碼后再次發送請求報文;認證通過時,則服務器發送響應的資源
認證法式兩種:
basic:明文–不安全,可以基于https訪問
digest:消息摘要認證,兼容性差
安全域:需要用戶認證后方能訪問的路徑;應該通過名稱對其進行標識,
以便告知用戶認證的原因
用戶的賬號和密碼
虛擬賬號:僅用于訪問某服務時用到的認證標識
存儲:文本文件,SQL數據庫,ldap目錄存儲,nis等
basic認證配置示例:
(1) 定義安全域
<Directory “/path”>
Options None
AllowOverride None 是否允許驗證.htaccess文件
AuthType Basic 認證類型
AuthName “String” 管理目錄提示語句
AuthUserFile “/PATH/HTTPD_USER_PASSWD_FILE”
驗證配置文件
Require user username1 username2 …
指定用戶
</Directory>
允許賬號文件中的所有用戶登錄訪問: Require valid-user
(2) 提供賬號和密碼存儲(文本文件)
使用專用命令完成此類文件的創建及用戶管理
htpasswd命令來源于httpd-tools包
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c:自動創建文件,僅應該在文件不存在時使用
-m:md5格式加密
-s:sha格式加密
-D:刪除指定用戶

實驗:基于用戶賬號密碼認證的訪問控制;

實驗環境在centos6.9上搭建httpd服務,(192.168.8.128)

基于安全考慮可以設置嚴格的權限:
chmod 600 /etc/httpd/conf.d/.husers
setfacl -m u:apache:r /etc/httpd/conf.d/.husers
針對主頁目錄進行配置:

HTTPD-相關的配置


HTTPD-相關的配置

也可以定義在.htaccess文件里:

vim /etc/httpd/conf/httpd.conf

HTTPD-相關的配置

# cd /app/website1/admin
vim .htaccess

HTTPD-相關的配置

基于組賬號進行認證
(1) 定義安全域
<Directory “/path”>
AuthType Basic
AuthName “String“
AuthUserFile “/PATH/HTTPD_USER_PASSWD_FILE”
AuthGroupFile “/PATH/HTTPD_GROUP_FILE
Require group grpname1 grpname2 …
</Directory>
(2) 創建用戶賬號和組賬號文件;
組文件:每一行定義一個組
GRP_NAME: username1 username2 …


實驗:基于用戶組的安全認證,在上個實驗基礎上實現

1、創建組文件
#vim /etc/httpd/conf.d/.htgroups
g1:httpuser1 httpuser2
g2:httpuser3
2、定義安全域
cd /app/website1/admin
vim .htaccess

HTTPD-相關的配置

字符瀏覽器測試:在另一臺機器上測試
links 192.168.8.128/admin

遠程客戶端和用戶驗證的控制
Satisfy ALL|Any
ALL 客戶機IP和用戶驗證都需要通過才可以
Any客戶機IP和用戶驗證,有一個滿足即可

示例: 

Require valid-user

Order allow,deny
Allow from 192.168.1
Satisfy Any

14、虛擬主機
站點標識: socket
IP相同,但端口不同
IP不同,但端口均為默認端口
FQDN不同;
請求報文中首部
Host: www.magedu.com
有三種實現方案:
基于ip:為每個虛擬主機準備至少一個ip地址 ;
基于port:為每個虛擬主機使用至少一個獨立的port;
基于FQDN:為每個虛擬主機使用至少一個FQDN
注意:一般虛擬機不要與main主機混用;因此,要使用虛擬主機, 一般
先禁用main主機
禁用方法:注釋中心主機的DocumentRoot指令即可
虛擬主機的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot “/path”
</VirtualHost>
建議:上述配置存放在獨立的配置文件中
其它可用指令:
ServerAlias:虛擬主機的別名;可多次使用
ErrorLog: 錯誤日志
CustomLog:訪問日志
<Directory “/path”> </Directory>
Alias

實驗1:基于IP的虛擬主機
a、準備環境,創建多個主頁文件,并為網卡配置多個IP地址
          ip addr add 192.168.8.130/24 dev eth0 label eth0:1

HTTPD-相關的配置


b、虛擬主機配置文件設置:
cd /etc/httpd/conf.d
vim vhosts.conf

HTTPD-相關的配置

c、在另一臺客戶端機器上進行驗證
2、基于端口的虛擬主機:

HTTPD-相關的配置


HTTPD-相關的配置


3、基于FQDN的虛擬主機

HTTPD-相關的配置

HTTPD-相關的配置

HTTPD-相關的配置


15、status頁面
幫助我們實現http服務器的一些功能狀態的查看,以頁面的方式查看他的工作情況:進程編號,負載狀態。
vim /etc/httpd/conf/httpd.conf
LoadModule status_module modules/mod_status.so

要想實現status功能,模塊必須加載。

可以在虛擬機設置里面定義,也可以單獨定義在conf.d目錄下。

<Location /server-status>
SetHandler server-status
Order allow,deny
Allow from 172.16
</Location>
ExtendedStatus On 顯示擴展信息






























































































原創文章,作者:shenjialong,如若轉載,請注明出處:http://www.www58058.com/85616

(1)
shenjialongshenjialong
上一篇 2017-08-29
下一篇 2017-08-29

相關推薦

  • varnish

    Web Page Cache: squid –> varnish程序的運行具有局部性特征:時間局部性:一個數據被訪問過之后,可能很快會被再次訪問空間局部性:一個數據被訪問時,其周邊的數據也有可能被訪問到 cache:命中 熱區:局部性;時效性:緩存空間耗盡:LRU過期:緩存清理 緩存命中率:hit/(hit+miss)(0,1)頁面命中率:…

    Linux干貨 2017-05-22
  • 文件管理初探(inode理解)及管道和IO重定向

    第一部分    文件管理初探   1、Linux系統上各主要目錄的簡介           /  根,所有文件的起點     ├── bin    存…

    Linux干貨 2016-07-29
  • 用戶管理權限命令總結

    用戶 Linux操作系統是一個多用戶操作系統,它允許多用戶同時登錄到系統上并使用資源。系統會根據賬戶來區分每個用戶的文件,進程,任務和工作環境,使得每個用戶工作都不受干擾。 用戶分類 超級用戶:(root,UID=0) 普通用戶:(UID在500到60000) 偽用戶:(UID在1到499) 系統和服務相關的:bin、daemon、shutdown等 進程相…

    Linux干貨 2017-04-03
  • Linux-系統啟動的基本過程 以及相關破環修復實驗。

    這章簡單描述下系統的啟動流程,主要以破環修復實驗為主: 系統啟動基本過程:       Linux系統啟動過程大致按照如下步驟進行(這是一個簡述):        第一階段:BIOS啟動引導階段;       …

    2017-07-10
  • 馬哥教育第20期-第二周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 cp:復制命令 用法: cp [源文件] [目標地址]           cp  vimrc /tmp/         cp [源文件1] [源文件2] ……

    Linux干貨 2016-06-27
  • centos 7 之nmcli命令

    1、nmcli命令的作用 nmcli : command‐line tool for controlling NetworkManager     NetworkManager:動態管理和監控網絡設置的守護進程。用戶和腳本都可使用命令行工具 nmcl…

    Linux干貨 2016-09-10
欧美性久久久久