Apache配置詳解

1. 虛擬主機概念

我們要想實現(xiàn)一個web站點巢钓,而且能夠在互聯(lián)網(wǎng)上被訪問塞淹,首先它再能運行在操作系統(tǒng)耙饰,而且這個操作系統(tǒng)還要運行在物理主機上(第一它是一個主機)摩瞎。在互聯(lián)網(wǎng)上能夠被訪問拴签,那我們需要一個主機,需要一個IP地址旗们,需要一個時時在線的服務器蚓哩,這需要多少資源?對眾多小型站點來講或者說對某種需求來講上渴,有可能都用不到服務器岸梨,也就是每天就10個人左右訪問,只是需要我們在線而已稠氮,如果我們就為這一點點的需求就投入重大的資源的話是非常浪費的曹阔。我們就期望能夠像我們使用虛擬機一樣,虛擬的OS一樣或虛擬的PC一樣隔披,能夠在一臺物理主機上虛擬出來多個可以同時運行的站點或者我們把它稱為主機因此就把它稱為虛擬主機赃份。

2. Apache 主機的類型

1. 中心主機

2. 虛擬主機

  1. 基于IP: 端口相同,IP地址不同奢米。
  2. 基于端口:IP相同抓韩,端口不同。
  3. 基于域名:IP地址相同鬓长,端口相同主機名不同

注意:所有的虛擬主機的配置我們都需要取消中心主機园蝠,也就是注釋掉 DocumentRoot 這是配置虛擬主機的前提

3. 基于域名的虛擬主機

例如我采用的 xampp 所以配置虛擬主機就在 C:\xampp\apache\conf\extra\httpd-vhosts.conf 中配置,由于這個文件默認被 include 到主配置文件中了痢士,所以在這里的修改都可以生效。

首先需要保證主配置文件中的中心主機被取消了也就是:

#DocumentRoot "C:/xampp/htdocs"

然后打開 httpd-vhosts.conf 配置文件茂装,按照下面的格式配置虛擬主機

<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs"
    ServerName localhost
    <Directory "C:/xampp/htdocs">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

1. <VirtualHost *:80>

apache監(jiān)聽本機的所有 IP 和 80 端口做多域名虛擬主機

2. DocumentRoot

表示服務器的根目錄

3. ServerName

就是表示域名怠蹂,我們采用域名方式配置虛擬主機,所以每個虛擬主機的域名應該是不一樣的才行

4. Directory

對根目錄的規(guī)則應用少态,其中涉及到對于目錄的訪問權(quán)限和其他配置問題

5. 對于 Directory 指令解析

1. Options

配置在特定目錄使用哪些特性城侧,常用的值和基本含義如下

  1. ExecCGI: 在該目錄下允許執(zhí)行CGI腳本。
  2. FollowSymLinks: 在該目錄下允許文件系統(tǒng)使用符號連接彼妻。
  3. Indexes: 當用戶訪問該目錄時嫌佑,如果用戶找不到DirectoryIndex指定的主頁文件(例如index.html),則返回該目錄下的文件列表給用戶。
  4. SymLinksIfOwnerMatch: 當使用符號連接時侨歉,只有當符號連接的文件擁有者與實際文件的擁有者相同時才可以訪問屋摇。

所以我們一般在配置 PHP 的時候所配置的內(nèi)容是

Options Indexes FollowSymLinks Includes ExecCGI

2. AllowOverride

允許存在于.htaccess文件中的指令類型(.htaccess文件名是可以改變的,其文件名由AccessFileName指令決定):

  • None: 當AllowOverride被設(shè)置為None時幽邓。不搜索該目錄下的.htaccess文件(可以減小服務器開銷)炮温。
  • All: 在.htaccess文件中可以使用所有的指令。

建議關(guān)閉這個選項牵舵,因為apache在文檔中已經(jīng)明確支持不建議使用它了柒啤,主要是會降低服務器性能倦挂,.htaccess 文件可以做到的我們都可以在 Directory 指令中做的更好。

3. Order

控制在訪問時Allow和Deny兩個訪問規(guī)則哪個優(yōu)先担巩,也就是黑白名單的匹配順序

  • Allow:允許訪問的主機列表(可用域名或子網(wǎng)方援,例如:Allow from 192.168.0.0/16)。
  • Deny:拒絕訪問的主機列表涛癌。

更詳細的用法可參看:order用法

匹配原則:

Allow,Deny

First, all Allow directives are evaluated; at least one must match, or the request is rejected. Next, all Deny directives are evaluated. If any matches, the request is rejected. Last, any requests which do not match an Allow or a Deny directive are denied by default.

Deny,Allow

First, all Deny directives are evaluated; if any match, the request is denied unless it also matches an Allow directive. Any requests which do not match any Allow or Deny directives are permitted.

4. DirectoryIndex

主頁文件設(shè)置 一般都是 index.html index.php

5. Deny /Allow

黑白名單書寫規(guī)則如下:

Allow from example.org
Allow from .net example.edu
Allow from 10.1.2.3
Allow from 192.168.1.104 192.168.1.205
Allow all

4. 基于端口的虛擬主機

對于同一個 ip 來做虛擬主機犯戏,就是需要監(jiān)聽不同的端口,首先需要在主配置文件中添加新的監(jiān)聽端口:

Listen 80
Listen 81

然后再虛擬主機里面配置

<Virtualhost *:80>
    DocumentRoot "/var1"
</Virtualhost>
<Virtualhost *:81>
    DocumentRoot "/var2"
</Virtualhost>

5. 基于ip的虛擬主機

這個就不過多贅述了祖很,完全和基于端口的配置方式一樣笛丙。也就是修改的是ip 而非端口、

6.服務器的優(yōu)化 (MPM: Multi-Processing Modules)

apache2主要的優(yōu)勢就是對多處理器的支持更好假颇,在編譯時同過使用--with-mpm選項來決定apache2的工作模式胚鸯。如果知道當前的apache2使用什么工作機制,可以通過httpd -l命令列出apache的所有模塊笨鸡,就可以知道其工作方式:

  • prefork:如果httpd -l列出prefork.c姜钳,則需要對下面的段進行配置。

    <IfModule prefork.c>
     StartServers 5 #啟動apache時啟動的httpd進程個數(shù)形耗。
     MinSpareServers 5 #服務器保持的最小空閑進程數(shù)哥桥。
     MaxSpareServers 10 #服務器保持的最大空閑進程數(shù)。
     MaxClients 150 #最大并發(fā)連接數(shù)激涤。
     MaxRequestsPerChild 1000 #每個子進程被請求服務多少次后被kill掉拟糕。0表示不限制,推薦設(shè)置為1000倦踢。
     </IfModule>
    

在該工作模式下送滞,服務器啟動后起動5個httpd進程(加父進程共6個,通過ps -ax|grep httpd命令可以看到)辱挥。當有用戶連接時犁嗅,apache會使用一個空閑進程為該連接服務,同時父進程會fork一個子進程晤碘。直到內(nèi)存中的空閑進程達到MaxSpareServers褂微。該模式是為了兼容一些舊版本的程序。我缺省編譯時的選項园爷。

  • worker:如果httpd -l列出worker.c宠蚂,則需要對下面的段進行配置:
<IfModule worker.c> 
    StartServers 2 #啟動apache時啟動的httpd進程個數(shù)。 
    MaxClients 150 #最大并發(fā)連接數(shù)腮介。 
    MinSpareThreads 25 #服務器保持的最小空閑線程數(shù)肥矢。 
    MaxSpareThreads 75 #服務器保持的最大空閑線程數(shù)。 
    ThreadsPerChild 25 #每個子進程的產(chǎn)生的線程數(shù)。 
    MaxRequestsPerChild 0 #每個子進程被請求服務多少次后被kill掉甘改。0表示不限制旅东,推薦設(shè)置為1000。 
</IfModule> 

該模式是由線程來監(jiān)聽客戶的連接十艾。當有新客戶連接時抵代,由其中的一個空閑線程接受連接。服務器在啟動時啟動兩個進程忘嫉,每個進程產(chǎn)生的線程數(shù)是固定的(ThreadsPerChild決定)荤牍,因此啟動時有50個線程。當50個線程不夠用時庆冕,服務器自動fork一個進程康吵,再產(chǎn)生25個線程。

  • perchild:如果httpd -l列出perchild.c访递,則需要對下面的段進行配置:
<IfModule perchild.c> 
    NumServers 5 #服務器啟動時啟動的子進程數(shù) 
    StartThreads 5 #每個子進程啟動時啟動的線程數(shù) 
    MinSpareThreads 5 #內(nèi)存中的最小空閑線程數(shù) 
    MaxSpareThreads 10 #最大空閑線程數(shù) 
    MaxThreadsPerChild 2000 #每個線程最多被請求多少次后退出晦嵌。0不受限制。 
    MaxRequestsPerChild 10000 #每個子進程服務多少次后被重新fork拷姿。0表示不受限制惭载。 
</IfModule> 

該模式下,子進程的數(shù)量是固定的响巢,線程數(shù)不受限制描滔。當客戶端連接到服務器時,又空閑的線程提供服務踪古。 如果空閑線程數(shù)不夠含长,子進程自動產(chǎn)生線程來為新的連接服務。該模式用于多站點服務器伏穆。

7.別名設(shè)置

對于不在DocumentRoot指定的目錄內(nèi)的頁面茎芋,既可以使用符號連接,也可以使用別名蜈出。別名的設(shè)置如下:

Alias /download/ "/var/www/download/" #訪問時可以輸入:http://www.custing.com/download/ 
 
<Directory "/var/www/download"> #對該目錄進行訪問控制設(shè)置 
    Options Indexes MultiViews 
    AllowOverride AuthConfig 
    Order allow,deny 
    Allow from all 
</Directory>

6、CGI設(shè)置

# 訪問時可以:http://www.clusting.com/cgi-bin/涛酗,但是該目錄下的CGI腳本文件要加可執(zhí)行權(quán)限
ScriptAlias /cgi-bin/ "/mnt/software/apache2/cgi-bin/" 
 
<Directory "/usr/local/apache2/cgi-bin"> #設(shè)置目錄屬性 
    AllowOverride None 
    Options None 
    Order allow,deny 
    Allow from all 
</Directory> 

8铡原、日志的設(shè)置

(1) 錯誤日志的設(shè)置
  • ErrorLog logs/error_log :日志的保存位置

  • LogLevel warn #日志的級別

顯示的格式日下:

[Mon Oct 10 15:54:29 2005] [error] [client 192.168.10.22] access to /download/ failed, reason: user admin not allowed access 
(2) 訪問日志設(shè)置

日志的缺省格式有如下幾種:

  • LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
  • LogFormat "%h %l %u %t "%r" %>s %b" common #common為日志格式名稱
  • LogFormat "%{Referer}i -> %U" referer
  • LogFormat "%{User-agent}i" agent
  • CustomLog logs/access_log common

格式中的各個參數(shù)如下:

%h --客戶端的ip地址或主機名 
%l --The 這是由客戶端 identd 判斷的RFC 1413身份,輸出中的符號 "-" 表示此處信息無效商叹。 
%u --由HTTP認證系統(tǒng)得到的訪問該網(wǎng)頁的客戶名燕刻。有認證時才有效,輸出中的符號 "-" 表示此處信息無效剖笙。 
%t --服務器完成對請求的處理時的時間卵洗。 
"%r" --引號中是客戶發(fā)出的包含了許多有用信息的請求內(nèi)容。 
%>s --這個是服務器返回給客戶端的狀態(tài)碼。 
%b --最后這項是返回給客戶端的不包括響應頭的字節(jié)數(shù)过蹂。 
"%{Referer}i" --此項指明了該請求是從被哪個網(wǎng)頁提交過來的十绑。 
"%{User-Agent}i" --此項是客戶瀏覽器提供的瀏覽器識別信息。 

下面是一段訪問日志的實例:

192.168.10.22 - bearzhang [10/Oct/2005:16:53:06 +0800] "GET /download/ HTTP/1.1" 200 1228 
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] "GET /icons/blank.gif HTTP/1.1" 304 - 
192.168.10.22 - - [10/Oct/2005:16:53:06 +0800] "GET /icons/back.gif HTTP/1.1" 304 – 

9酷勺、用戶認證的配置

(1) httpd.conf用戶認證配置:
AccessFileName .htaccess 
......... 
Alias /download/ "/var/www/download/" 
<Directory "/var/www/download"> 
    Options Indexes 
    AllowOverride AuthConfig 
</Directory> 
(2) create a password file:
/usr/local/apache2/bin/htpasswd -c /var/httpuser/passwords bearzhang
(3) configure the server to request a password and tell the server which users are allowed access.
vi /var/www/download/.htaccess: 
 
AuthType Basic 
AuthName "Restricted Files" 
AuthUserFile /var/httpuser/passwords 
Require user bearzhang 
#Require valid-user #all valid user 

10本橙、虛擬主機的配置總結(jié)

(1)基于IP地址的虛擬主機配置
Listen 80 
 
<VirtualHost 172.20.30.40> 
    DocumentRoot /www/example1 
    ServerName www.example1.com 
</VirtualHost> 
 
<VirtualHost 172.20.30.50> 
    DocumentRoot /www/example2 
    ServerName www.example2.org 
</VirtualHost> 
(2) 基于IP和多端口的虛擬主機配置
Listen 172.20.30.40:80 
Listen 172.20.30.40:8080 
Listen 172.20.30.50:80 
Listen 172.20.30.50:8080 
 
<VirtualHost 172.20.30.40:80> 
    DocumentRoot /www/example1-80 
    ServerName www.example1.com 
</VirtualHost> 
 
<VirtualHost 172.20.30.40:8080> 
    DocumentRoot /www/example1-8080
    ServerName www.example1.com 
</VirtualHost> 
 
<VirtualHost 172.20.30.50:80> 
    DocumentRoot /www/example2-80 
    ServerName www.example1.org 
</VirtualHost> 
 
<VirtualHost 172.20.30.50:8080> 
    DocumentRoot /www/example2-8080 
    ServerName www.example2.org 
</VirtualHost> 
(3) 單個IP地址的服務器上基于域名的虛擬主機配置:
# Ensure that Apache listens on port 80 
Listen 80 
 
# Listen for virtual host requests on all IP addresses 
NameVirtualHost *:80 
 
<VirtualHost *:80> 
    DocumentRoot /www/example1 
    ServerName www.example1.com 
    ServerAlias example1.com. *.example1.com 
    # Other directives here 
</VirtualHost> 
 
<VirtualHost *:80> 
    DocumentRoot /www/example2 
    ServerName www.example2.org 
    # Other directives here 
</VirtualHost> 
(4) 在多個IP地址的服務器上配置基于域名的虛擬主機:
Listen 80 
 
# This is the "main" server running on 172.20.30.40 
ServerName server.domain.com 
DocumentRoot /www/mainserver 
 
# This is the other address 
NameVirtualHost 172.20.30.50 
 
<VirtualHost 172.20.30.50> 
    DocumentRoot /www/example1 
    ServerName www.example1.com 
    # Other directives here ... 
</VirtualHost> 
 
<VirtualHost 172.20.30.50> 
    DocumentRoot /www/example2 
    ServerName www.example2.org 
    # Other directives here ... 
</VirtualHost> 
(5) 在不同的端口上運行不同的站點(基于多端口的服務器上配置基于域名的虛擬主機):
Listen 80 
Listen 8080 
 
NameVirtualHost 172.20.30.40:80 
NameVirtualHost 172.20.30.40:8080 

<VirtualHost 172.20.30.40:80> 
    ServerName www.example1.com 
    DocumentRoot /www/domain-80 
</VirtualHost> 
 
<VirtualHost 172.20.30.40:8080> 
    ServerName www.example1.com
    DocumentRoot /www/domain-8080 
</VirtualHost> 
 
<VirtualHost 172.20.30.40:80>
    ServerName www.example2.org 
    DocumentRoot /www/otherdomain-80 
</VirtualHost> 
 
<VirtualHost 172.20.30.40:8080> 
    ServerName www.example2.org 
    DocumentRoot /www/otherdomain-8080 
</VirtualHost> 
(6) 基于域名和基于IP的混合虛擬主機的配置:
Listen 80 
 
NameVirtualHost 172.20.30.40 
 
<VirtualHost 172.20.30.40> 
    DocumentRoot /www/example1 
    ServerName www.example1.com 
</VirtualHost> 
 
<VirtualHost 172.20.30.40> 
    DocumentRoot /www/example2 
    ServerName www.example2.org 
</VirtualHost> 
 
<VirtualHost 172.20.30.40> 
    DocumentRoot /www/example3 
    ServerName www.example3.net 
</VirtualHost> 

11.SSL加密的配置

首先在配置之前先來了解一些基本概念:

a. 證書的概念:首先要有一個根證書,然后用根證書來簽發(fā)服務器證書和客戶證書脆诉,一般理解:服務器證書和客戶證書是平級關(guān)系甚亭。SSL必須安裝 服務器證書來認證。 因此:在此環(huán)境中击胜,至少必須有三個證書:根證書亏狰,服務器證書,客戶端證書偶摔。 在生成證書之前暇唾,一般會有一個私鑰,同時用私鑰生成證書請求啰挪,再利用證書服務器的根證來簽發(fā)證書信不。 SSL所使用的證書可以自己生成,也可以通過一個商業(yè)性CA(如Verisign 或 Thawte)簽署證書亡呵。

b. 簽發(fā)證書的問題:如果使用的是商業(yè)證書抽活,具體的簽署方法請查看相關(guān)銷售商的說明;如果是知己簽發(fā)的證書锰什,可以使用openssl自帶的CA.sh 腳本工具下硕。

如果不為單獨的客戶端簽發(fā)證書,客戶端證書可以不用生成汁胆,客戶端與服務器端使用相同的證書梭姓。

(1) conf/ssl.conf 配置文件中的主要參數(shù)配置如下:

Listen 443 
 
SSLPassPhraseDialog buildin 
#SSLPassPhraseDialog exec:/path/to/program 
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache 
SSLSessionCacheTimeout 300 
SSLMutex file:/usr/local/apache2/logs/ssl_mutex 
 
<VirtualHost _default_:443> 
# General setup for the virtual host 
DocumentRoot "/usr/local/apache2/htdocs" 
ServerName www.example.com:443 
ServerAdmin you@example.com 
ErrorLog /usr/local/apache2/logs/error_log 
TransferLog /usr/local/apache2/logs/access_log 
  
SSLEngine on 
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 
  
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt 
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key 
CustomLog /usr/local/apache2/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" 
</VirtualHost> 

(2) 創(chuàng)建和使用自簽署的證書:

a. Create a RSA private key for your Apache server

/usr/local/openssl/bin/openssl genrsa -des3 -out /usr/local/apache2/conf/ssl.key/server.key 1024 

b. Create a Certificate Signing Request (CSR)

/usr/local/openssl/bin/openssl req -new -key /usr/local/apache2/conf/ssl.key/server.key -out /usr/local/apache2/conf/ssl.key/server.csr 

c. Create a self-signed CA Certificate (X509 structure) with the RSA key of the CA

/usr/local/openssl/bin/openssl req -x509 -days 365 -key /usr/local/apache2/conf/ssl.key/server.key -in /usr/local/apache2/conf/ssl.key/server.csr -out /usr/local/apache2/conf/ssl.crt/server.crt 
/usr/local/openssl/bin/openssl genrsa 1024 -out server.key 
/usr/local/openssl/bin/openssl req -new -key server.key -out server.csr 
/usr/local/openssl/bin/openssl req -x509 -days 365 -key server.key -in server.csr -out server.crt 

(3) 創(chuàng)建自己的CA(認證證書),并使用該CA來簽署服務器的證書嫩码。

mkdir /CA 
cd /CA 
cp openssl-0.9.7g/apps/CA.sh /CA 
./CA.sh -newca 
openssl genrsa -des3 -out server.key 1024 
openssl req -new -key server.key -out server.csr 
cp server.csr newreq.pem 
./CA.sh -sign 
cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.crt 
cp server.key /usr/local/apache2/conf/ssl.key/

參考文章

深入理解Apache虛擬主機

Apache配置文件httpd.conf詳解

Apache文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末誉尖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子铸题,更是在濱河造成了極大的恐慌铡恕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丢间,死亡現(xiàn)場離奇詭異探熔,居然都是意外死亡,警方通過查閱死者的電腦和手機烘挫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門诀艰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事其垄】疗眩” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵捉捅,是天一觀的道長撤防。 經(jīng)常有香客問我,道長棒口,這世上最難降的妖魔是什么寄月? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮无牵,結(jié)果婚禮上漾肮,老公的妹妹穿的比我還像新娘。我一直安慰自己茎毁,他們只是感情好克懊,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著七蜘,像睡著了一般谭溉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上橡卤,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天扮念,我揣著相機與錄音,去河邊找鬼碧库。 笑死柜与,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的嵌灰。 我是一名探鬼主播弄匕,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沽瞭!你這毒婦竟也來了迁匠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤驹溃,失蹤者是張志新(化名)和其女友劉穎柒瓣,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吠架,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年搂鲫,在試婚紗的時候發(fā)現(xiàn)自己被綠了傍药。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拐辽,靈堂內(nèi)的尸體忽然破棺而出拣挪,到底是詐尸還是另有隱情,我是刑警寧澤俱诸,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布菠劝,位于F島的核電站,受9級特大地震影響睁搭,放射性物質(zhì)發(fā)生泄漏赶诊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一园骆、第九天 我趴在偏房一處隱蔽的房頂上張望舔痪。 院中可真熱鬧,春花似錦锌唾、人聲如沸锄码。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滋捶。三九已至,卻和暖如春余黎,著一層夾襖步出監(jiān)牢的瞬間重窟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工驯耻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亲族,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓可缚,卻偏偏與公主長得像霎迫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子帘靡,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容