Nginx keepalive配置

编译安装nginx并软连接

一件安装nginx

编译安装nginx负载均衡
下载:
mkdir -p /server/tools
cd /server/tools
wget http://nginx.org/download/nginx-1.16.0.tar.gz

#安装依赖。
yum install pcre pcre-devel -y
yum install openssl openssl-devel -y  #https加密用他。

#编译安装步骤
tar xf nginx-1.16.0.tar.gz 
cd nginx-1.16.0/
useradd -s /sbin/nologin www -M 
id www
./configure  --user=www --group=www --prefix=/application/nginx-1.16.0/ --with-http_stub_status_module  --with-http_ssl_module --with-pcre
make 
make install
ln -s /application/nginx-1.16.0/ /application/nginx
/application/nginx/sbin/nginx 
netstat -lntup|grep nginx

一、实践基于域名的虚拟主机

1、配置基于域名的nginx.conf内容

先使用grep命令过滤命令来生成基础的Nginx主配置文件nginx.conf,然后根据生成的初始配置文件进行修改,使他成为所需要的形式,具体命令如下:

[root@web02 ~]# cd /application/nginx/conf/
[root@web02 /application/nginx/conf]# egrep -v "^$|#" nginx.conf.default >nginx.conf 《===过滤包含#号和空行生成新的文件nginx.conf

或者直接创建新的配置文件mginx.conf然后编辑,输入内容如下:


[root@web02 /application/nginx/conf]# cat -n nginx.conf
     1  worker_processes  1;
     2  events {
     3      worker_connections  1024;
     4  }
     5  http {
     6      include       mime.types;
     7      default_type  application/octet-stream;
     8      sendfile        on;
     9      keepalive_timeout  65;
    10      server {
    11          listen       80;
    12          server_name  www.etiantian.org;
    13          location / {
    14              root   html/www;
    15              index  index.html index.htm;
    16          }
    17      }
    18  }

2、创建域名对应的站点及文件

此处配置的是基于域名的虚拟主机,创建对应的站点目录及文件,命令如下:

[root@web02 /application/nginx/conf]# mkdir ../html/www 《==../表示上级目录及/application/nginx
[root@web02 /application/nginx/conf]# echo "www.etiantian.org" >../html/www/index.html
[root@web02 /application/nginx/conf]# cat ../html/www/index.html
www.etiantian.org

上述命令是在/application/nginx/html下创建了一个www的站点目录,并把“www.etiantian.org”重定向到index.html《==这里面是网页显示的内容

3、检查语法并重新加载

先检查修改过的Nginx配置文件语法是否正确

[root@web02 /application/nginx/conf]# echo 'PATH="/application/nginx/sbin:$PATH"' >>/etc/profile
[root@web02 /application/nginx/conf]# . /etc/profile
[root@web02 /application/nginx/conf]# echo $PATH
/application/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@web02 /application/nginx/conf]# nginx -t
nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
[root@web02 /application/nginx/conf]# nginx -s reload
[root@web02 /application/nginx/conf]# 

如果出现ok和succeed说明语法正确
然后平滑重启Nginx,及重新加载配置文件

[root@web02 /application/nginx/conf]# nginx -s reload
最后测试域名站点配置的访问结果。这里分为Linux客户端和windows客户端。

下面是针对Linux客户端的访问:

[root@web02 /application/nginx/conf]# echo "10.0.0.8 www.etiantian.org" >>/etc/hosts
[root@web02 /application/nginx/conf]# tail -1 /etc/hosts
10.0.0.8 www.etiantian.org
[root@web02 /application/nginx/conf]# curl www.etiantian.org
www.etiantian.org

下面是针对Windows客户端浏览器进行访问。
如果域名没有解析,可以在笔记本上编辑一个hosts文件,添加hosts解析记录
windows客户端hosts文件路径是:C盘的system root\system32\dirves\etc\hosts
添加10.0.0.8 www.etiantian.org
配置好后在dos提示行检查一下结果,如下:

WINDOWS下测试:

C:\Windows\System32\drivers\etc\hosts
10.0.0.8 www.etiantian.org

ping www.etiantian.org返回10.0.0.8就是对的

4、配置多个基于域名的虚拟主机

(1)增加新域名对应的配置

在1、中已经添加了一个www.etiantian.org虚拟主机的配置,再增加两个虚拟主机的配置。站点域名为bbs.etiantian.orgblog.etiantian.org增加的配置一定要在nginx.conf的http{ }区块内,最好放在www.etiantian.org虚拟主机配置的享下面增加的内容如下:

[root@web02 /application/nginx/conf]# cat -n nginx.conf
     1  worker_processes  1;
     2  events {
     3      worker_connections  1024;
     4  }
     5  http {
     6      include       mime.types;
     7      default_type  application/octet-stream;
     8      sendfile        on;
     9      keepalive_timeout  65;
    10      server {
    11          listen       80;
    12          server_name  www.etiantian.org;
    13          location / {
    14              root   html/www;
    15              index  index.html index.htm;
    16          }
    17      }
    18      server {
    19          listen       80;
    20          server_name  bbs.etiantian.org;
    21          location / {
    22              root   html/bbs;
    23              index  index.html index.htm;
    24          }
    25      }
    26      server {
    27          listen       80;
    28          server_name  blog.etiantian.org;
▽   29          location / {
    30              root   html/blog;
    31              index  index.html index.htm;
    32          }
    33      }
    34  }

(2)创建新虚拟主机站点对应的目录及文件

创建上述两个新增域名分别对应的站点目录及文件,命令如下:

[root@web02 /application/nginx/conf]# mkdir ../html/{bbs,blog}
[root@web02 /application/nginx/conf]# echo "bbs.etiantian.org" >../html/bbs/index.html
[root@web02 /application/nginx/conf]# echo "blog.etiantian.org" >../html/blog/index.html
[root@web02 /application/nginx/conf]# 
[root@web02 /application/nginx/conf]# 
[root@web02 /application/nginx/conf]# cat ../html/blog/index.html
blog.etiantian.org
[root@web02 /application/nginx/conf]# cat ../html/bbs/index.html
bbs.etiantian.org
(3)重新加载Nginx配置
[root@web02 /application/nginx/conf]# nginx -t
nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
[root@web02 /application/nginx/conf]# nginx -s reload
[root@web02 /application/nginx/conf]# 

(4)在客户端测试

同样,这里分为Linux客户端和windows客户端。
下面是针对Linux客户端的访问:

[root@web02 /application/nginx/conf]# tail -1 /etc/hosts
10.0.0.8 www.etiantian.org bbs.etiantian.org blog.etiantian.org        
                                                                            
[root@web02 /application/nginx/conf]# curl www.etiantian.org
www.etiantian.org
[root@web02 /application/nginx/conf]# curl bbs.etiantian.org
bbs.etiantian.org
[root@web02 /application/nginx/conf]# curl blog.etiantian.org
blog.etiantian.org

下面是针对Windows客户端浏览器进行访问。如下:

Windows下测试:

C:\Windows\System32\drivers\etc\hosts

10.0.0.8    www.etiantian.org   bbs.etiantian.org   blog.etiantian.org    
 

如果配置完成后,以后为了排错和留着用,可以做一个备份,命令如下:

[root@web02 /application/nginx/conf]# /bin/cp nginx.conf nginx.conf_BashName

二、基于端口虚拟主机实践:

基于端口的虚拟主机配置实战基于端口的虚拟主机在生产环境中不多见,仅偶尔会用到,一般为公司内部人员提供访问,如OA系统、网站程序的后台、CMS发布后台、MySQL的Web客户端 phpmyadmin等,使用特殊端口多是从安全上考虑的。下面讲下基于端口的虚拟主机相关配置部署。

1.配置虚拟主机监听的端口

如果要配置基于端口的虚拟主机,就需要为每个虚拟主机配置不同的端口。这里以上述基于域名的3个虚拟主机为例进行讲解。首先,编辑nginx.conf主配置文件,然后把每个虚拟主机的“listen 80;"这个配置行的80数字端口修改掉,内容见下文,注意 server name域名位置可以不做任何变更,哪怕是相同域名也可以,因为,基于端口的虚拟主机就是通过端口来唯一区别不同的虚拟主机的,只要端口不同就是不同的虚拟主机。

2.修改虚拟主机配置

经过修改后,完整的基于端口的多个虚拟主机配置如下:

[root@web02 ~]# cd /application/nginx/conf/
[root@web02 /application/nginx/conf]# cp nginx.conf{,_BaseName}
[root@web02 /application/nginx/conf]# ls 
fastcgi.conf            index.html  mime.types.default   scgi_params           win-utf
fastcgi.conf.default    koi-utf     nginx.conf           scgi_params.default
fastcgi_params          koi-win     nginx.conf_BaseName  uwsgi_params
fastcgi_params.default  mime.types  nginx.conf.default   uwsgi_params.default

[root@web02 /application/nginx/conf]# vim nginx.conf
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
    server {
        listen       81;
        server_name  bbs.etiantian.org;
        location / {
            root   html/bbs;
            index  index.html index.htm;
        }
    }
    server {
        listen       82;
        server_name  blog.etiantian.org;
     location / {
            root   html/blog;
            index  index.html index.htm;
        }
    }
}

3、检查语法重新加载匹配生效

[root@web02 /application/nginx/conf]# netstat -lntup|grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14322/nginx: master 
[root@web02 /application/nginx/conf]# nginx -t
nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
[root@web02 /application/nginx/conf]# nginx -s reload
[root@web02 /application/nginx/conf]# netstat -lntup|grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      14322/nginx: master 
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      14322/nginx: master 
tcp        0      0 0.0.0.0:82              0.0.0.0:*               LISTEN      14322/nginx: master 

4、测试不同端口访问结果,如下:

[root@web02 /application/nginx/conf]# curl www.etiantian.org:80
www.etiantian.org
[root@web02 /application/nginx/conf]# curl bbs.etiantian.org:81
bbs.etiantian.org
[root@web02 /application/nginx/conf]# curl blog.etiantian.org:82
blog.etiantian.org

浏览到的内容如果和URL地址栏里的域名部分一样,就表示配置正确了。Nginx虚拟主机宜方帮助的网址为:
http://Nginx.org/en/docs/http/request_processing.html

三、基于IP的虚拟主机配置实战

基于IP的虚拟主机在生产环境中的应用更为少见,因此、本节的内容读者了解即可

1,在服务器网卡上增加多个IP

然要配置基于卫P的虚拟主机, i让每个虚拟主机有不同的IP地址,此处以增加辅助IP的形式临时在etho 正在联网识别并翻译...IP,命令如下:

[root@web02 ~]# ip addr add 10.0.0.9 dev eth0 label eth0:9
[root@web02 ~]# ip addr add 10.0.0.10 dev eth0 label eth0:10

检查配置生效结果:

[root@web02 ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.8  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20c:29ff:fe12:170c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:12:17:0c  txqueuelen 1000  (Ethernet)
        RX packets 21765  bytes 18029629 (17.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12171  bytes 1426129 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.9  netmask 255.255.255.255  broadcast 0.0.0.0
        ether 00:0c:29:12:17:0c  txqueuelen 1000  (Ethernet)

eth0:10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.10  netmask 255.255.255.255  broadcast 0.0.0.0
        

2、添加虚拟主机配置

基于IP的虚拟主机实际配置示例如下。这是一个端口和IP混合的虚拟主机示例,读者可以自行修改,使其仅仅基于IP,即每个虚拟主机的server name字段都换成IP地址

[root@web02 /application/nginx/conf]# cat -n nginx.conf
     1  worker_processes  1;
     2  events {
     3      worker_connections  1024;
     4  }
     5  http {
     6      include       mime.types;
     7      default_type  application/octet-stream;
     8      sendfile        on;
     9      keepalive_timeout  65;
    10      server {
    11          listen       10.0.0.8:80;
    12          server_name  www.etiantian.org;
    13          location / {
    14              root   html/www;
    15              index  index.html index.htm;
    16          }
    17      }
    18      server {
    19          listen       10.0.0.9:80;
    20          server_name  bbs.etiantian.org;
    21          location / {
    22              root   html/bbs;
    23              index  index.html index.htm;
    24          }
    25      }
    26      server {
    27          listen       10.0.0.10:80;
    28          server_name  blog.etiantian.org;
    29          location / {
    30              root   html/blog;
    31              index  index.html index.htm;
    32          }
    33      }
    34  }

3、检查语法并平滑重启

[root@web02 /application/nginx/conf]# nginx -t
nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
[root@web02 /application/nginx/conf]# nginx -s reload
[root@web02 /application/nginx/conf]#

有时候特殊,必须关掉之后再开启Nginx

[root@web02 /application/nginx/conf]# nginx -s stop
[root@web02 /application/nginx/conf]# nginx
[root@web02 /application/nginx/conf]# netstat -lntup|grep nginx
tcp        0      0 10.0.0.10:80            0.0.0.0:*               LISTEN      14967/nginx: master 
tcp        0      0 10.0.0.9:80             0.0.0.0:*               LISTEN      14967/nginx: master 
tcp        0      0 10.0.0.8:80             0.0.0.0:*               LISTEN      14967/nginx: master 

[root@web02 /application/nginx/conf]# curl 10.0.0.8
www.etiantian.org
[root@web02 /application/nginx/conf]# curl 10.0.0.9
bbs.etiantian.org
[root@web02 /application/nginx/conf]# curl 10.0.0.10
blog.etiantian.org

一:什么是恶意域名解析
一般情况下,要使域名能访问到网站需要两步,第一步,将域名解析到网站所在的主机,第二步,在web服务器中将域名与相应的网站绑定。但是,如果通过主机IP能直接访问某网站,那么把域名解析到这个IP也将能访问到该网站,而无需在主机上绑定,也就是说任何人将任何域名解析到这个IP就能访问到这个网站。

二:恶意域名解析的危害
可能您并不介意通过别人的域名访问到您的网站,但是如果这个域名是未备案域名呢?
假如那域名是不友善的域名,比如曾经指向非法网站,容易引发搜索引擎惩罚,连带IP受到牵连。即使域
没什么问题,但流量也会被劫持到别的域名,从而遭到广告联盟的封杀。

三;如何防止,配置里第一个标签如下配置
server{
listen 80;
server_name _default;
return 500;
}

1、规范优化Nginx配置文件

优化nginx配置的实战方案:
具体步骤如下:

[root@web02 /application/nginx/conf]# mkdir extra                                                   
[root@web02 /application/nginx/conf]# sed -n '10,17p' nginx.conf 
    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
[root@web02 /application/nginx/conf]# sed -n '10,17p' nginx.conf >extra/01_www.conf
[root@web02 /application/nginx/conf]# sed -n '18,25p' nginx.conf 
    server {
        listen       80;
        server_name  bbs.etiantian.org;
        location / {
            root   html/bbs;
            index  index.html index.htm;
        }
    }
[root@web02 /application/nginx/conf]# sed -n '18,25p' nginx.conf >extra/02_bbs.conf
[root@web02 /application/nginx/conf]# sed -n '26,33p' nginx.conf
    server {
        listen       80;
        server_name  blog.etiantian.org;
        location / {
            root   html/blog;
            index  index.html index.htm;
        }
    }
[root@web02 /application/nginx/conf]# sed -n '26,33p' nginx.conf >extra/03_blog.conf

删除nginx主配置文件10到33行的内容,谨慎

(1)提前配置文件命令如下:
[root@web02 /application/nginx/conf]# sed -i '10,33d' nginx.conf
[root@web02 /application/nginx/conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
}
(2)执行下面的插入命令
[root@web02 /application/nginx/conf]# sed -i '10 i include extra/01_www.conf;\ninclude extra/02_bbs.conf;\ninclude extra/03_blog.conf;'  nginx.conf
[root@web02 /application/nginx/conf]# 

上述sed命令是在nginx.conf配置文件中加入三行包含虚拟主机文件的配置
如下:

[root@web02 /application/nginx/conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
include extra/01_www.conf;
include extra/02_bbs.conf;
include extra/03_blog.conf;
}
(3)重新加载配置,并测试
[root@web02 /application/nginx/conf]# nginx -t
nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
[root@web02 /application/nginx/conf]# nginx -s reload
[root@web02 /application/nginx/conf]# curl www.etiantian.org
www.etiantian.org
[root@web02 /application/nginx/conf]# curl bbs.etiantian.org
bbs.etiantian.org
[root@web02 /application/nginx/conf]# curl blog.etiantian.org
blog.etiantian.org

优化Nginx配置文件进行网站访问,一切正常!
通过主配置文件中加上include包含的配置,可以让Nginx的配置更简单,修改的最终的配置内容如下:

[root@web02 /application/nginx/conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
include extra/01_www.conf;
include extra/02_bbs.conf;
include extra/03_blog.conf;
}
[root@web02 /application/nginx/conf]# cd extra/
[root@web02 /application/nginx/conf/extra]# cat 01_www.conf 
    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
[root@web02 /application/nginx/conf/extra]# cat 02_bbs.conf 
    server {
        listen       80;
        server_name  bbs.etiantian.org;
        location / {
            root   html/bbs;
            index  index.html index.htm;
        }
    }
[root@web02 /application/nginx/conf/extra]# cat 03_blog.conf 
    server {
        listen       80;
        server_name  blog.etiantian.org;
        location / {
            root   html/blog;
            index  index.html index.htm;
        }
    }

Nginx status介绍

检查编译安装是是否安装模块

[root@web02 /application/nginx/conf]# nginx -v
nginx version: nginx/1.16.0
[root@web02 /application/nginx/conf]# 
[root@web02 /application/nginx/conf]# 
[root@web02 /application/nginx/conf]# nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/application/nginx-1.16.0/ --with-http_stub_status_module --with-http_ssl_module --with-pcre

1》增加状态配置参数
stub_status on;
access_log off;

[root@web02 /application/nginx/conf]# cat extra/04_status.conf 
#status
server{
    listen  80;
    server_name  status.etiantian.org;
    location / {
      stub_status on;
      access_log   off;
    }
  }
  [root@web02 /application/nginx/conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
include extra/01_www.conf;
include extra/02_bbs.conf;
include extra/03_blog.conf;
}

2》语法检查

[root@web02 /application/nginx/conf]# nginx -t
nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
[root@web02 /application/nginx/conf]# nginx -s reload

3》windows客户端hosts解析

10.0.0.8 www.etiantian.org bbs.etiantian.org blog.etiantian.org status.etiantian.org
  
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342