第十三周作業(yè)

1煤杀、搭建時(shí)間服務(wù)器孕荠,日志服務(wù)器并簡述sudo安全切換痹升。

1)搭建時(shí)間服務(wù)器:

早期是用ntp服務(wù):

#yum install ntp

其配置文件是/etc/ntp.conf.

配置文件內(nèi)容中server?表示以誰為時(shí)間服務(wù)器,restrict?表示允許哪個(gè)IP的機(jī)器來同步我的時(shí)間典蜕。? 如果restrict后面指定自己127.0.0.1則不允許別人來同步時(shí)間(即只是做為客戶端断盛,而不做為服務(wù)端)。

centos7以后開始使用chrony做時(shí)間服務(wù)器愉舔,chrony兼容NTP服務(wù)钢猛。監(jiān)聽123(傳統(tǒng)NTP服務(wù)端口)和323(chrony服務(wù)端口),這樣客戶端既可以是ntp也可以是chrony轩缤。

接下來以服務(wù)端和客戶端都是chrony來說明時(shí)間同步命迈,

A機(jī):192.168.184.136(時(shí)間服務(wù)器),B機(jī):192.168.184.138(客戶端)

root用戶登錄A機(jī):

安裝chrony

#?yum install chrony -y

修改配置文件

# vi /etc/chrony.conf

server 0.centos.pool.ntp.org iburst

allow 192.168.184.0/24

server來指定上一級(jí)時(shí)間同步服務(wù)器火的,allow表示允許那個(gè)IP段以本機(jī)為時(shí)間服務(wù)器同步時(shí)間壶愤。這里指定 192.168.184.0/24網(wǎng)段

配置完重啟chrony服務(wù)

#systemctl? restart? chronyd.service

#ss -tunlp? ?查看端口323

root用戶登錄B機(jī):

安裝chrony

#?yum install chrony -y

修改配置文件

# vi /etc/chrony.conf

#server 0.centos.pool.ntp.org iburst

#server 1.centos.pool.ntp.org iburst

#server 2.centos.pool.ntp.org iburst

#server 3.centos.pool.ntp.org iburst

server 192.168.184.136 iburst

注釋掉其他的server,配置以A機(jī)為時(shí)間服務(wù)器

然后重啟客戶端的chrony服務(wù)

# systemctl? restart? chronyd.service

# systemctl enable chronyd.service 開機(jī)自啟動(dòng)服務(wù)

查看同步源(時(shí)間服務(wù)器)

# chronyc sources

查看同步狀態(tài)

#chronyc sourcestats

2)搭建日志服務(wù)器

為了更好的管理應(yīng)用程序和操作系統(tǒng)的日志馏鹤,使用日志服務(wù)器進(jìn)行管理征椒,我們需要用到rsyslog,它是由早期的syslog的升級(jí)版。它可以收集系統(tǒng)引導(dǎo)啟動(dòng)湃累、應(yīng)用程序啟動(dòng)勃救、應(yīng)用程序(尤其是服務(wù)類應(yīng)用程序)運(yùn)行過程中的事件。

記錄的格式為:事件產(chǎn)生日期和時(shí)間? 主機(jī)? 進(jìn)程PID? 事件內(nèi)容治力。

rsyslog的特性:多線程,支持TCP蒙秒、UDP、SSL宵统、TLS税肪、RELP協(xié)議。可存儲(chǔ)信息于日志益兄、mysql等數(shù)據(jù)庫管理系統(tǒng)锻梳。可以對(duì)日志信息進(jìn)行過濾净捅,可以自定義輸出格式疑枯。

安裝rsyslog

#yum install rsyslog

它的主程序是rsyslogd

它的配置文件是/etc/rsyslog.conf,? /etc/rsyslog.d/*.conf

主配置文件rsyslog.conf?主要由三個(gè)部分組成:?

MODULES? 表示加載的模塊列表

GLOBAL DIRECTIVES? ?表示全局的配置

RULES? ?表示日志記錄規(guī)則(重點(diǎn))

其中:

MODULES段的格式為

$ModLoad? 模塊名稱

如果模塊名稱為im開起表示輸入模塊,如果以om開頭表示輸出模塊

GLOBAL DIRECTIVES?段主要定義一些常用設(shè)置蛔六,比如:

$WorkDirectory? 表示工作目錄

RULES?段的格式為:

facility.priority? target

其中

facility:設(shè)施荆永,從功能上或程序上對(duì)日志收集進(jìn)行分類,如:auth,authpriv,cron,daemon,kern,lpr,mail,mark,news,security,user,uucp,local0~local7,syslog

priority:優(yōu)先級(jí)国章,日志級(jí)別,如下(從左到右具钥,由低到高):debug,info,notice,warn(warning),err(error),crit(critical),alert,emerg(panic)

指定級(jí)別的方式:

*:所有級(jí)別;

none:沒有級(jí)別;

priority:此級(jí)別以及高于此級(jí)別的所有級(jí)別)

=priority:僅此級(jí)別;

一般要求日志級(jí)別為warn,即warn以及warn以上級(jí)別的日志要記錄液兽。

生產(chǎn)上一般不會(huì)開debug級(jí)別的日志骂删,因?yàn)槿罩居涗浱鄷?huì)導(dǎo)致io繁忙。

target:日志寫入目標(biāo)

文件:把日志事件寫入到指定的文件中四啰,日志文件通常位于/var/log目錄下宁玫,

文件路徑前面加"-"表示異步寫入文件;

用戶:將日志事件通知給指定的用戶,通過將信息發(fā)送給登錄到系統(tǒng)上的用戶的終端進(jìn)行的;

日志服務(wù)器:@host 柑晒,把日志發(fā)送到指定的服務(wù)器主機(jī)欧瘪,

要保證host日志服務(wù)器在tcp或udp協(xié)議的514端口有監(jiān)聽并提供日志服務(wù)。

管道:? | COMMAND? 送到某一命令進(jìn)行處理

接下來做一個(gè)日志服務(wù)器和客戶端服務(wù)器匙赞,把客戶端的服務(wù)內(nèi)容提交到日志服務(wù)器上佛掖。

A機(jī):192.168.184.136(日志服務(wù)器),B機(jī):192.168.184.138(客戶端)

在日志服務(wù)器(A機(jī))上:

#?yum install rsyslog

修改配置文件

# vi? /etc/rsyslog.conf

# Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514

# Provides TCP syslog reception

$ModLoad imtcp

$InputTCPServerRun 514

以上配置行的注釋去掉后就會(huì)開啟對(duì)tcp和udp協(xié)議的514端口進(jìn)行監(jiān)聽涌庭。

重啟rsyslog服務(wù)

#systemctl restart rsyslog.service

#ss -tunl? 查看有514端口監(jiān)聽芥被。

在客戶端服務(wù)器(B機(jī))上

#?yum install rsyslog

修改配置文件

# vi? /etc/rsyslog.conf

#*.info;mail.none;authpriv.none;cron.none? ? ? ? ? ? ? ?/var/log/messages

*.info;mail.none;authpriv.none;cron.none? ? ? ? ? ? ? ? @192.168.184.136

把它的target?改為? @日志服務(wù)器IP

然后重啟客戶端的rsyslog服務(wù)

#systemctl restart rsyslog.service

這樣就不會(huì)有日志記錄到B機(jī)的/var/log/message中了。而是記錄到日志服務(wù)器A上脾猛,由日志服務(wù)器上的配置文件決定日志記錄到哪里撕彤。由我們沒有改為A機(jī)上RULES?日志規(guī)則所以是寫入到日志服務(wù)器上的/var/log/message(為了較好的看出效果鱼鸠,需要事先設(shè)置不同的主機(jī)名)

接下來把日志保存的mysql中猛拴。

在日志服務(wù)器(A機(jī))上運(yùn)行:

安裝rsyslog-mysql的模塊

# yum install rsyslog-mysql

查看安裝文件位置

#? rpm -ql rsyslog-mysql

安裝mariadb數(shù)據(jù)庫

# yum install mariadb-server??mariadb

# vi? /etc/my.cnf.d/server.cnf

[mysqld]

skip_name_resolve=ON

innodb_file_per_table=ON

啟動(dòng)數(shù)據(jù)庫并導(dǎo)入數(shù)據(jù)

systemctl start mariadb.service

#?mysql

#? mysql?

mysql>GRANT ALL ON Syslog.* TO 'rsyslog'@'192.168.184.%' IDENTIFIED BY 'rsyspass';

mysql>?flush privileges;

mysql>quit;

修改日志服務(wù)器上的rsyslog配置文件

# vi /etc/rsyslog.conf

#### MODULES ####

$ModLoad ommysql

#### RULES ####

*.info;mail.none;authpriv.none;cron.none :ommysql:192.168.184.136,Syslog,rsyslog,rsyspass

加載ommysql模塊,并配置target為ommysql 蚀狰,

后面這串內(nèi)容為:ommysql:數(shù)據(jù)庫主機(jī),數(shù)據(jù)庫名,數(shù)據(jù)庫用戶愉昆,數(shù)據(jù)庫密碼。

然后重啟rsyslog.service

# systemctl restart rsyslog.service

在B機(jī)上登錄用戶和登出用戶操作麻蹋,再查一下A機(jī)的數(shù)據(jù)庫發(fā)現(xiàn)有新的記錄產(chǎn)生跛溉。

再接下來做一個(gè)WEB展示接口:

安裝lamp組合

# yum install httpd php php-mysql php-gd -y

安裝loganalyzer

# tar xf

#? cp? -r? loganalyzer-4.1.7.tar.gz

#? ?cp -r???loganalyzer-4.1.7/src? ?/var/www/html/loganalyzer

#? ?cp -r???loganalyzer-4.1.7/contirb/*.sh? ?/var/www/html/loganalyzer/

#? ?cd? /var/www/html/loganalyzer/

#? chmod? +x? *.sh

#./configure.sh

# service httpd start

然后通過URL訪問:

http://A機(jī)IP/loganalyzer

#./secure.sh

3)sudo?安全切換

sudo?能夠讓獲得授權(quán)的用戶以另外一個(gè)用戶(一般為root用戶)的身份運(yùn)行指定的命令

授權(quán)配置文件/etc/sudoers,但是一般使用visudo命令進(jìn)行編輯。因?yàn)檎`操作引起系統(tǒng)異常芳室。

授權(quán)配置文件的格式:

users? hosts=(runas)? ?commands

含義是专肪,users列表中的用戶(組),可以在hosts列表的位置上堪侯,以runas用戶的身份來運(yùn)行commands命令列表中的命令嚎尤。

各個(gè)字段可能的值?為:

users:? sudo命令的發(fā)起用戶

用戶名?或uid

%用戶組名? 或%gid? ?(這里要注意用戶需把基本組切換為該用戶組,才能使用sudo)

User_Alias 用戶別名

hosts:? 允許的地址

ip地址

主機(jī)名

NetAddr

Host_Alias?主機(jī)別名

runas:? ?以某一用戶的身份執(zhí)行

用戶名?或uid

Runas_Alias 用戶別名

commands:?指定的命令列表

command(命令建議使用完整的絕對(duì)路徑)

伍宦!command?表示禁止某一命令

directory

sudoedit:特殊權(quán)限芽死,可用于向其它用戶授予sudo權(quán)限

Cmnd_Alias? ? 命令別名

這幾個(gè)字段中hosts,runas, commands都可以用ALL來表示所有次洼。

定義別名的方法:

ALIAS_TYPE NAME=item1,item2,item3,...

NAME:別名名稱关贵,必須使用全大寫字符

ALIAS_TYPE :User_Alias,Host_Alias卖毁,Runas_Alias 揖曾,Cmnd_Alias

sodu命令執(zhí)行時(shí)會(huì)要求用戶輸入自己的密碼,為了避免頻繁驗(yàn)密與安全其見势篡,能記錄成功認(rèn)證結(jié)果一段時(shí)間翩肌,默認(rèn)為5分鐘,即5分鐘內(nèi)不需要再驗(yàn)證用戶密碼禁悠。

以sudo的方式來運(yùn)行指定的命令

sudo? ?[options]? COMMAND

-l? 列出sudo配置文件中用戶能執(zhí)行的命令

-k? 清除此前緩存用戶成功認(rèn)證結(jié)果念祭,之后再次運(yùn)行sudo時(shí)要驗(yàn)證用戶密碼。

如果想要讓用戶輸入部分命令時(shí)不需要進(jìn)行密碼驗(yàn)證碍侦,在sudo配置文件中commands列表部分粱坤,可以在命令列表前面加上"NOPASSWD",則其后的命令不需要密碼瓷产,如果某些命令又需要密碼就在前面加上“PASSWD”站玄,所以commands列表可以為這種格式:

NOPASSWD? 不需要密碼的命令列表??PASSWD? 需要密碼的命令列表

安全提示:在sudo配置文件中

root ALL=(ALL) ALL

%wheel ALL=(ALL) ALL

上面配置中root用戶這行沒有問題,但是%wheel這行要注意濒旦,如果把某用戶加入到%wheel組株旷,當(dāng)用戶把基本組切換為wheel組時(shí)就可以像root用戶一樣運(yùn)行命令,較有風(fēng)險(xiǎn)的命令舉例如下:

sudo su - root? ? 不需要密碼就可以切換到root用戶

sudo? passwd? root? ? 修改root用戶密碼,不需要輸入原密碼尔邓。

建議把%wheel改為

%wheel ALL=(ALL)? ?ALL,!/bin/su,!/usr/bin/passwd root

2晾剖、詳解nginx模塊使用方法。

nginx的特性之一就是模塊化設(shè)計(jì)梯嗽,有較好的擴(kuò)展性齿尽。

其模塊分類如下:

核心模塊:core module

標(biāo)準(zhǔn)模塊:

HTTP 模塊: ngx_http_*

HTTP Core modules? 默認(rèn)功能

HTTP Optional modules 需編譯時(shí)指定

Mail 模塊? ? ngx_mail_*

Stream 模塊 ngx_stream_*

第三方模塊

1.核心模塊:

#user? nobody;? ?指定worker進(jìn)程的運(yùn)行身份,如組不指定灯节,默認(rèn)和用戶名同名

worker_processes? 1|auto;? 指定worker進(jìn)程的數(shù)量循头;通常應(yīng)該為當(dāng)前主機(jī)的cpu的物理核心數(shù)

include? path/to/file? ?指明包含進(jìn)來的其它配置文件片斷

worker_cpu_affinity auto [cpumask] 提高緩存命中率

CPU MASK:

00000001:0號(hào)CPU

00000010:1號(hào)CPU

10000000:8號(hào)CPU

worker_priority number? 指定worker進(jìn)程的nice值绵估,設(shè)定worker進(jìn)程優(yōu)先級(jí):[-20,20]

#error_log file [level]? ??錯(cuò)誤日志文件及其級(jí)別;出于調(diào)試需要卡骂,可設(shè)定為debug国裳;但debug僅在編譯時(shí) 使用了“--with-debug”選項(xiàng)時(shí)才有效

#error_log? logs/error.log? notice;

#error_log? logs/error.log? info;

#pid? ? ? ? logs/nginx.pid;??指定存儲(chǔ)nginx主進(jìn)程PID的文件路徑

events {

worker_connections? 1024;??每個(gè)worker進(jìn)程所能夠打開的最大并發(fā)連接數(shù)數(shù)量

use method? ?指明并發(fā)連接請(qǐng)求的處理方法 ,默認(rèn)自動(dòng)選擇最優(yōu)方法 ,如全跨, use epoll

accept_mutex on | off??處理新的連接請(qǐng)求的方法躏救;on指由各個(gè)worker輪流處理新請(qǐng)求,Off指每個(gè)新請(qǐng) 求的到達(dá)都會(huì)通知(喚醒)所有的worker進(jìn)程螟蒸,但只有一個(gè)進(jìn)程可獲得連接盒使,影響性能

}

#daemon on|off??是否以守護(hù)進(jìn)程方式運(yùn)行nignx,默認(rèn)是守護(hù)進(jìn)程方式

#master_process on|off? ? ?是否以master/worker模型運(yùn)行nginx七嫌;默認(rèn)為on少办,off 將不啟動(dòng)worker

2.HTTP Core modules模塊的配置使用:

(1)與套接字相關(guān)的配置:

server { ... }? 配置一個(gè)虛擬主機(jī)

server {

listen address[:PORT]|PORT;

server_name SERVER_NAME;

root /PATH/TO/DOCUMENT_ROOT;

}

listen

listen? port??指令監(jiān)聽在不同的端口

listen IP:PORT;? IP 地址不同

同時(shí)listen子句還支持一些可選的選項(xiàng):

●default_server? 設(shè)定為默認(rèn)虛擬主機(jī)

●ssl? ? 限制僅能夠通過ssl連接提供服務(wù)

●backlog=number? 超過并發(fā)連接數(shù)后,新請(qǐng)求進(jìn)入后援隊(duì)列的長度

●rcvbuf=size? 接收緩沖區(qū)大小

●sndbuf=size? 發(fā)送緩沖區(qū)大小

server_name:

指令指向不同的主機(jī)名诵原,虛擬主機(jī)的主機(jī)名稱后可跟多個(gè)由空白字符分隔的字符串 英妓,

支持*通配任意長度的任意字符?如:*aaa(左側(cè)通配符)bbb*(右側(cè)通配符)

支持~起始的字符做正則表達(dá)式模式匹配,性能原因慎用

匹配優(yōu)先級(jí):字符串精確匹配 >?左側(cè)通配符 >右側(cè)通配符>正則表達(dá)式>default_server

tcp_nodelayon | off;

在keepalived模式下的連接是否啟用TCP_NODELAY選項(xiàng)

當(dāng)為off時(shí)绍赛,延遲發(fā)送蔓纠,合并多個(gè)請(qǐng)求后再發(fā)送

默認(rèn)On時(shí),不延遲發(fā)送

可用于:http, server, location

sendfile on | off;

是否啟用sendfile功能吗蚌,在內(nèi)核中封裝報(bào)文直接發(fā)送? 默認(rèn)Off

server_tokenson | off | build | string

是否在響應(yīng)報(bào)文的Server首部顯示nginx版本

(2)定義路徑相關(guān)的配置:

root

設(shè)置web資源的路徑映射腿倚;用于指明請(qǐng)求的URL所對(duì)應(yīng)的文檔的目錄路徑,可用于server

若配置:root? /path/to/dir

則http://servername/aaa/bbb.jpg? 映射的訪問地址就是? ?/path/to/dir/aaa/bbb.jpg

location

在一個(gè)server中l(wèi)ocation配置段可存在多個(gè)蚯妇,用于實(shí)現(xiàn)從uri到文件系統(tǒng)的路 徑映射敷燎;ngnix會(huì)根據(jù)用戶請(qǐng)求的URI來檢查定義的所有l(wèi)ocation,并找出一個(gè)最 佳匹配箩言,而后應(yīng)用其配置 硬贯。

location? 操作符?uri? ?{...}

操作符有:

=:對(duì)uri精確匹配

^~:對(duì)URI的最左邊部分做匹配檢查,不區(qū)分字符大小寫

~:對(duì)URI做正則表達(dá)式模式匹配陨收,區(qū)分字符大小寫

~*: 對(duì)URI做正則表達(dá)式模式匹配饭豹,不區(qū)分字符大小寫

不帶符號(hào):匹配起始于此uri的所有的uri

匹配優(yōu)先級(jí)從高到低:? ??=, ^~, ~/~*, 不帶符號(hào)

alias? ?path

路徑別名,文檔映射的另一種機(jī)制务漩;僅能用于location上下文

注意:location中使用root指令和alias指令的意義不同

root拄衰,用來指定根目錄,故把uri做為子目錄繼續(xù)按路徑找文件菲饼。給定的路徑對(duì)應(yīng)于location中的/uri/左側(cè)的/

alias肾砂,用來定義路徑別名列赎,故用來替換uri來指名路徑宏悦,再繼續(xù)按路徑找文件镐确,給定的路徑對(duì)應(yīng)于location中的/uri/右側(cè)的/

index file ...;

指定默認(rèn)網(wǎng)頁文件(又稱歡迎頁面)當(dāng)未指定路徑下的哪個(gè)文件時(shí),此頁面為默認(rèn)文件饼煞,注意需要:ngx_http_index_module模塊

error_page code ... [=[response]] uri;

需要模塊:ngx_http_core_module

定義錯(cuò)誤頁源葫,以指定的響應(yīng)狀態(tài)碼進(jìn)行 響應(yīng)

可用位置:http, server, location, if in location

例如: error_page? 404? /404.html

try_files

try_files file ... uri;

或 try_files file ... =code;

按順序檢查文件是否存在,返回第一個(gè)找到的文件或文件夾(結(jié)尾加斜線表示 為文件夾)砖瞧,如果所有的文件或文件夾都找不到息堂,會(huì)進(jìn)行一個(gè)內(nèi)部重定向到最 后一個(gè)參數(shù)。只有最后一個(gè)參數(shù)可以引起一個(gè)內(nèi)部重定向块促,之前的參數(shù)只設(shè)置 內(nèi)部URI的指向荣堰。最后一個(gè)參數(shù)是回退URI且必須存在,否則會(huì)出現(xiàn)內(nèi)部500錯(cuò)誤竭翠。

(3)? 定義客戶端請(qǐng)求的相關(guān)配置

keepalive_timeout timeout [header_timeout];

設(shè)定保持連接超時(shí)時(shí)長振坚,0表示禁止長連接,默認(rèn)為75s

keepalive_requestsnumber;

在一次長連接上所允許請(qǐng)求的資源的最大數(shù)量? 默認(rèn)為100

keepalive_disable none | browser ...

對(duì)哪種瀏覽器禁用長連接

send_timeout time;

向客戶端發(fā)送響應(yīng)報(bào)文的超時(shí)時(shí)長斋扰,此處是指兩次寫操作之間的間隔時(shí)長渡八, 而非整個(gè)響應(yīng)過程的傳輸時(shí)長

client_body_buffer_size size;

用于接收每個(gè)客戶端請(qǐng)求報(bào)文的body部分的緩沖區(qū)大小传货;默認(rèn)為16k屎鳍;超 出此大小時(shí),其將被暫存到磁盤上的由下面client_body_temp_path指令所定義 的位置

client_body_temp_path path [level1 [level2 [level3]]];

設(shè)定存儲(chǔ)客戶端請(qǐng)求報(bào)文的body部分的臨時(shí)存儲(chǔ)路徑及子目錄結(jié)構(gòu)和數(shù)量? ? ? 目錄名為16進(jìn)制的數(shù)字问裕;

(4)對(duì)客戶端進(jìn)行限制的相關(guān)配置

limit_rate rate;

限制響應(yīng)給客戶端的傳輸速率逮壁,單位是bytes/second? 默認(rèn)值0表示無限制

limit_except method ... { ... },

僅用于location? 限制客戶端使用除了指定的請(qǐng)求方法之外的其它方法

method可以是:GET, HEAD, POST, PUT, DELETE粮宛,MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK, PATCH

例如:

limit_except GET {

allow 192.168.1.0/24;

deny? all;? }

表示 除了GET之外其它方法僅允許192.168.1.0/24網(wǎng)段主機(jī)使用

(5)文件操作優(yōu)化的配置

aio on | off | threads[=pool];

是否啟用aio功能

directio size | off;

當(dāng)文件大于等于給定大小時(shí)貌踏,例如directio 4m,同步(直接)寫磁盤窟勃,而非寫緩存

open_file_cache off;

open_file_cache max=N [inactive=time];

nginx可以緩存以下三種信息:? (1) 文件元數(shù)據(jù):文件的描述符祖乳、文件大小和最近一次的修改時(shí)間? (2) 打開的目錄結(jié)構(gòu)? (3) 沒有找到的或者沒有權(quán)限訪問的文件的相關(guān)信息

max=N:可緩存的緩存項(xiàng)上限;達(dá)到上限后會(huì)使用LRU算法實(shí)現(xiàn)管理

inactive=time:緩存項(xiàng)的非活動(dòng)時(shí)長秉氧,在此處指定的時(shí)長內(nèi)未被命中的或命中的次 數(shù)少于open_file_cache_min_uses指令所指定的次數(shù)的緩存項(xiàng)即為非活動(dòng)項(xiàng)眷昆,將被刪除

open_file_cache_errors on | off;

是否緩存查找時(shí)發(fā)生錯(cuò)誤的文件一類的信息? 默認(rèn)值為off

open_file_cache_min_uses number;

open_file_cache指令的inactive參數(shù)指定的時(shí)長內(nèi),至少被命中此處指定 的次數(shù)方可被歸類為活動(dòng)項(xiàng)? 默認(rèn)值為1

open_file_cache_valid time;

緩存項(xiàng)有效性的檢查頻率? 默認(rèn)值為60s

3.ngx_http_access_module模塊 的配置使用:

可實(shí)現(xiàn)基于ip的訪問控制功能

allow address | CIDR | unix: | all;

deny address | CIDR | unix: | all;

用于 http, server, location, limit_except?上下文

自上而下檢查汁咏,一旦匹配亚斋,將生效,條件嚴(yán)格的置前

4.ngx_http_auth_basic_module模塊的配置使用:

實(shí)現(xiàn)基于用戶的訪問控制攘滩,使用basic機(jī)制進(jìn)行用戶認(rèn)證

auth_basic string | off;

auth_basic_user_file file;

用戶口令文件:

1帅刊、明文文本:格式name:password:comment

2、加密文本:由htpasswd命令實(shí)現(xiàn)漂问,此命令由httpd-tools所提供

5.ngx_http_stub_status_module模塊的配置使用:

用于輸出nginx的基本狀態(tài)信息

stub_status;?表示返回基本狀態(tài)信息赖瞒,信息含義如下:

Active connections:當(dāng)前狀態(tài)女揭,活動(dòng)狀態(tài)的連接數(shù)

accepts:統(tǒng)計(jì)總值,已經(jīng)接受的客戶端請(qǐng)求的總數(shù)

handled:統(tǒng)計(jì)總值栏饮,已經(jīng)處理完成的客戶端請(qǐng)求的總數(shù)

requests:統(tǒng)計(jì)總值吧兔,客戶端發(fā)來的總的請(qǐng)求數(shù)

Reading:當(dāng)前狀態(tài),正在讀取客戶端請(qǐng)求報(bào)文首部的連接的連接數(shù)

Writing:當(dāng)前狀態(tài)袍嬉,正在向客戶端發(fā)送響應(yīng)報(bào)文過程中的連接數(shù)

Waiting:當(dāng)前狀態(tài)境蔼,正在等待客戶端發(fā)出請(qǐng)求的空閑連接數(shù)

6.ngx_http_log_module模塊 的配置使用:

指定日志格式記錄請(qǐng)求

log_format name string ...;

指定日志格式的名稱,以及對(duì)應(yīng)的格式字符串伺通。string可以使用nginx核心模塊及其它模塊內(nèi)嵌的變量

access_log

訪問日志文件路徑箍土,格式及相關(guān)的緩沖的配置access_log? path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

access_log off;

open_log_file_cache

緩存各日志文件相關(guān)的元數(shù)據(jù)信息

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];

open_log_file_cache off;

max:緩存的最大文件描述符數(shù)量

min_uses:在inactive指定的時(shí)長內(nèi)訪問大于等于此值方可被當(dāng)作活動(dòng)項(xiàng)

inactive:非活動(dòng)時(shí)長

valid:驗(yàn)證緩存中各緩存項(xiàng)是否為活動(dòng)項(xiàng)的時(shí)間間隔

7.ngx_http_gzip_module 模塊?的配置使用:

用gzip方法壓縮響應(yīng)數(shù)據(jù),節(jié)約帶寬

gzip on | off;? ? 啟用或禁用gzip壓縮

gzip_comp_level level;? ? 壓縮比由低到高:1 到 9? 默認(rèn):1

gzip_disable regex ...;? ? 匹配到客戶端瀏覽器不執(zhí)行壓縮

gzip_min_length length;? ? 啟用壓縮功能的響應(yīng)報(bào)文大小閾值

gzip_http_version 1.0 | 1.1;? ? 設(shè)定啟用壓縮功能時(shí)罐监,協(xié)議的最小版本? 默認(rèn):1.1

gzip_buffers number size;? ? 支持實(shí)現(xiàn)壓縮功能時(shí)緩沖區(qū)數(shù)量及每個(gè)緩存區(qū)的大小? 默認(rèn):32 4k 或 16 8k

gzip_types mime-type ...;? ? 指明僅對(duì)哪些類型的資源執(zhí)行壓縮操作涮帘;即壓縮過濾器

默認(rèn)包含有text/html,不用顯示指定笑诅,否則出錯(cuò)

gzip_vary on | off;? ? ?如果啟用壓縮调缨,是否在響應(yīng)報(bào)文首部插入“Vary: Accept-Encoding”

gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;

nginx充當(dāng)代理服務(wù)器時(shí),對(duì)于后端服務(wù)器的響應(yīng)報(bào)文吆你,在何種條件下啟 用壓縮功能

off:不啟用壓縮

expired弦叶,no-cache, no-store,private:對(duì)后端服務(wù)器的響應(yīng)報(bào)文首部 Cache-Control值任何一個(gè)妇多,啟用壓縮功能

8.ngx_http_ssl_module模塊?的配置使用:

ssl on | off;

為指定虛擬機(jī)啟用HTTPS protocol伤哺, 建議用listen指令代替

ssl_certificate file;

當(dāng)前虛擬主機(jī)使用PEM格式的證書文件

ssl_certificate_key file;

當(dāng)前虛擬主機(jī)上與其證書匹配的私鑰文件

ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];

支持ssl協(xié)議版本,默 認(rèn)為后三個(gè)

ssl_session_cache off | none | [builtin[:size]] [shared:name:size];

none:? 通知客戶端支持ssl session cache者祖,但實(shí)際不支持

builtin[:size]:使用OpenSSL內(nèi)建緩存立莉,為每worker進(jìn)程私有

[shared:name:size]:在各worker之間使用一個(gè)共享的緩存

ssl_session_timeout time;

客戶端連接可以復(fù)用ssl session cache中緩存的ssl參數(shù)的有效時(shí)長,默認(rèn)5m

9.ngx_http_rewrite_module模塊的配置使用:

將用戶請(qǐng)求的URI基于PCRE regex所描述的模式進(jìn)行檢查七问,而后完成重定向替換

rewrite regex replacement [flag]

將用戶請(qǐng)求的URI基于regex所描述的模式進(jìn)行檢查蜓耻,匹配到時(shí)將其替換為 replacement指定的新的URI

注意:如果在同一級(jí)配置塊中存在多個(gè)rewrite規(guī)則,那么會(huì)自下而下逐個(gè) 檢查械巡;被某條件規(guī)則替換完成后刹淌,會(huì)重新一輪的替換檢查

隱含有循環(huán)機(jī)制,但不超過10次;如果超過讥耗,提示500響應(yīng)碼有勾,[flag]所表示 的標(biāo)志位用于控制此循環(huán)機(jī)制

如果replacement是以http://或https://開頭,則替換結(jié)果會(huì)直接以重向返 回給客戶端, 即永久重定向301

[flag]:

last:重寫完成后停止對(duì)當(dāng)前URI在當(dāng)前l(fā)ocation中后續(xù)的其它重寫操作古程, 而后對(duì)新的URI啟動(dòng)新一輪重寫檢查蔼卡;提前重啟新一輪循環(huán),不建議在location中 使用

break:重寫完成后停止對(duì)當(dāng)前URI在當(dāng)前l(fā)ocation中后續(xù)的其它重寫操作挣磨, 而后直接跳轉(zhuǎn)至重寫規(guī)則配置塊之后的其它配置雇逞;結(jié)束循環(huán)荤懂,建議在location中使 用

redirect:臨時(shí)重定向,重寫完成后以臨時(shí)重定向方式直接返回重寫后生成 的新URI給客戶端喝峦,由客戶端重新發(fā)起請(qǐng)求;使用相對(duì)路徑,或者h(yuǎn)ttp://或https:// 開頭呜达,狀態(tài)碼:302

permanent:重寫完成后以永久重定向方式直接返回重寫后生成的新URI給 客戶端谣蠢,由客戶端重新發(fā)起請(qǐng)求,狀態(tài)碼:301

return

return code [text];

return code URL;

return URL;

停止處理查近,并返回給客戶端指定的響應(yīng)碼

rewrite_log on | off;

是否開啟重寫日志, 發(fā)送至error_log(notice level)

set $variable value;

用戶自定義變量

注意:變量定義和調(diào)用都要以$開頭

if (condition) { ... }

條件滿足時(shí)眉踱,執(zhí)行配置塊中的配置指令;server, location

condition:

比較操作符:

=? 相同? ? !=? 不同

~:模式匹配霜威,區(qū)分字符大小寫

~*:模式匹配谈喳,不區(qū)分字符大小寫

!~:模式不匹配,區(qū)分字符大小寫

!~*:模式不匹配戈泼,不區(qū)分字符大小寫

文件及目錄存在性判斷:

-e, !-e 存在(包括文件婿禽,目錄,軟鏈接)

-f, !-f? 文件? -d, !-d? 目錄? -x, !-x? 執(zhí)行

10.ngx_http_referer_module模塊的配置使用:

用來阻止Referer首部無有效值的請(qǐng)求訪問大猛,可防止盜鏈

valid_referers none|blocked|server_names|string ...;

定義referer首部的合法可用值扭倾,不能匹配的將是非法值

none:請(qǐng)求報(bào)文首部沒有referer首部

blocked:請(qǐng)求報(bào)文有referer首部,但無有效值

server_names:參數(shù)挽绩,其可以有值作為主機(jī)名或主機(jī)名模式

arbitrary_string:任意字符串膛壹,但可使用*作通配符

regular expression:被指定的正則表達(dá)式模式匹配到的字符串,要使用~開頭

11.ngx_http_proxy_module 模塊的配置使用:

轉(zhuǎn)發(fā)請(qǐng)求至另一臺(tái)主機(jī)

proxy_pass URL;

可用于location上下文,例如:

server {

...

server_name HOSTNAME;

location /uri/ {

proxy_pass http://host[:port];? ?(注意: 最后沒有/)

}

...

}

上面示例:http://HOSTNAME/uri --> http://host/uri

如果上面示例中有 /唉堪,即:http://host[:port]/? 意味著:http://HOSTNAME/uri --> http://host/? 即置換

注意:proxy_pass后面路徑不帶uri時(shí)模聋,會(huì)將location的uri傳遞(附加)給后端主機(jī) ,

proxy_pass后面的路徑是一個(gè)uri時(shí)唠亚,其會(huì)將location的uri替換為proxy_pass的 uri

如果location定義其uri時(shí)使用了正則表達(dá)式的模式链方,則proxy_pass之后必須不 能使用uri; 用戶請(qǐng)求時(shí)傳遞的uri將直接附加至后端服務(wù)器之后

proxy_set_header field value;

設(shè)定發(fā)往后端主機(jī)的請(qǐng)求報(bào)文的請(qǐng)求首部的值

適用于上下文:http, server, location

proxy_set_header X-Real-IP? $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

請(qǐng)求報(bào)文的標(biāo)準(zhǔn)格式如下:

X-Forwarded-For: client1, proxy1, proxy2

proxy_cache_path;

定義可用于proxy功能的緩存;

適用于上下文:http

proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];

proxy_cache zone | off; 默認(rèn)off

指明調(diào)用的緩存灶搜,或關(guān)閉緩存機(jī)制侄柔;

適用于上下文:http, server, location

????????proxy_cache_key string;

緩存中用于“鍵”的內(nèi)容

默認(rèn)值:proxy_cache_key $scheme$proxy_host$request_uri;

proxy_cache_valid [code ...] time;

定義對(duì)特定響應(yīng)碼的響應(yīng)內(nèi)容的緩存時(shí)長

適用于上下文:http

proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | off

在被代理的后端服務(wù)器出現(xiàn)哪種情況下,可直接使用過期的緩存響應(yīng)客戶端

proxy_cache_methods GET | HEAD | POST ...;

對(duì)哪些客戶端請(qǐng)求方法對(duì)應(yīng)的響應(yīng)進(jìn)行緩存占调,GET和HEAD方法總是被緩存

proxy_hide_header field;

默認(rèn)nginx在響應(yīng)報(bào)文中不傳遞后端服務(wù)器的首部字段Date, Server, X-Pad,? X-Accel-等暂题,用于隱藏后端服務(wù)器特定的響應(yīng)首部

proxy_connect_timeout time;

定義與后端服務(wù)器建立連接的超時(shí)時(shí)長,如超時(shí)會(huì)出現(xiàn)502錯(cuò)誤究珊,默認(rèn)為 60s薪者,一般不建議超出75s

proxy_send_timeout time;

將請(qǐng)求發(fā)送給后端服務(wù)器的超時(shí)時(shí)長;默認(rèn)為60s

proxy_read_timeout time;

等待后端服務(wù)器發(fā)送響應(yīng)報(bào)文的超時(shí)時(shí)長剿涮,默認(rèn)為60s

12.ngx_http_headers_module模塊 的配置使用:

向由代理服務(wù)器響應(yīng)給客戶端的響應(yīng)報(bào)文添加自定義首部言津,或修改指定首部的 值

?? ? ? ?add_header name value [always];

添加自定義首部

add_header X-Via? $server_addr;

add_header X-Cache $upstream_cache_status;

add_header X-Accel $server_name;

?? ? ? ?add_trailer name value [always];

添加自定義響應(yīng)信息的尾部

13.ngx_http_fastcgi_module模塊 的配置使用:

轉(zhuǎn)發(fā)請(qǐng)求到FastCGI服務(wù)器攻人,不支持php模塊方式

?? ? ? ?fastcgi_pass address;

address為后端的fastcgi server的地址

可用位置:location, if in location

?? ? ? ?fastcgi_index name;

fastcgi默認(rèn)的主頁資源

?? ? ? ?fastcgi_param parameter value [if_not_empty];

設(shè)置傳遞給 FastCGI服務(wù)器的參數(shù)值,可以是文本悬槽,變量或組合

fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];

定義fastcgi的緩存怀吻;

path? 緩存位置為磁盤上的文件系統(tǒng)

max_size=size? 磁盤path路徑中用于緩存數(shù)據(jù)的緩存空間上限

levels=levels:緩存目錄的層級(jí)數(shù)量,以及每一級(jí)的目錄數(shù)量? ? levels=ONE:TWO:THREE

keys_zone=name:size? ? ?k/v映射的內(nèi)存空間的名稱及大小

inactive=time? 非活動(dòng)時(shí)長

fastcgi_cache zone | off;

調(diào)用指定的緩存空間來緩存數(shù)據(jù)

可用位置:http, server, location

? ? ? ? ??fastcgi_cache_key string;

定義用作緩存項(xiàng)的key的字符串

? ? ? ? ??fastcgi_cache_methods GET | HEAD | POST ...;

為哪些請(qǐng)求方法使用緩存

? ? ? ? ??fastcgi_cache_min_usesnumber;

緩存空間中的緩存項(xiàng)在inactive定義的非活動(dòng)時(shí)間內(nèi)至少要被訪問到此處所指定的次數(shù)方 可被認(rèn)作活動(dòng)項(xiàng)

? ? ? ? ??fastcgi_keep_connon | off;

收到后端服務(wù)器響應(yīng)后初婆,fastcgi服務(wù)器是否關(guān)閉連接蓬坡,建議啟用長連接

? ? ? ? ??fastcgi_cache_valid [code ...] time;

不同的響應(yīng)碼各自的緩存時(shí)長

14.ngx_http_upstream_module模塊?的配置使用:

用于將多個(gè)服務(wù)器定義成服務(wù)器組,而由proxy_pass, fastcgi_pass等指令 進(jìn)行引用

? ? ? ? ??upstream name { ... }

定義后端服務(wù)器組磅叛,會(huì)引入一個(gè)新的上下文

默認(rèn)調(diào)度算法是wrr

可用位置: http

例如:

upstream httpdsrvs {

server ...

server...

...

}

? ? ? ? ??server address [parameters];

? ? ? ? ??在upstream上下文中server成員屑咳,以及相關(guān)的參數(shù);

? ? ? ? ??可用位置upstream

? ? ? ? ??address的表示格式:

unix:/PATH/TO/SOME_SOCK_FILE

IP[:PORT]

HOSTNAME[:PORT]

? ? ? ? ??parameters:

weight=number? 權(quán)重弊琴,默認(rèn)為1

max_conns? 連接后端報(bào)務(wù)器最大并發(fā)活動(dòng)連接數(shù)兆龙,1.11.5后支持

max_fails=number 失敗嘗試最大次數(shù);超出此處指定的次數(shù)時(shí)敲董,server將被標(biāo) 記為不可用,默認(rèn)為1

fail_timeout=time? 后端服務(wù)器標(biāo)記為不可用狀態(tài)的連接超時(shí)時(shí)長紫皇,默認(rèn)10s

backup 將服務(wù)器標(biāo)記為“備用”,即所有服務(wù)器均不可用時(shí)才啟用

down 標(biāo)記為“不可用”腋寨,配合ip_hash使用坝橡,實(shí)現(xiàn)灰度發(fā)布

? ? ? ? ??ip_hash

? ? ? ? ??源地址hash調(diào)度方法

? ? ? ? ??least_conn 最少連接調(diào)度算法,當(dāng)server擁有不同的權(quán)重時(shí)其為wlc精置, 當(dāng)所有后端主機(jī)連接數(shù)相同時(shí)计寇,則使用wrr,適用于長連接

? ? ? ? ??hash key [consistent] 基于指定的key的hash表來實(shí)現(xiàn)對(duì)請(qǐng)求的調(diào)度脂倦, 此處的key可以直接文本番宁、變量或二者組合

? ? ? ? ??作用:將請(qǐng)求分類,同一類請(qǐng)求將發(fā)往同一個(gè)upstream server赖阻,使用 consistent參數(shù)蝶押,將使用ketama一致性hash算法,適用于后端是Cache服務(wù)器 (如varnish)時(shí)使用

? ? ? ? ??? ? ? ? ??hash $request_uri consistent;

? ? ? ??? ? ? ? ??hash $remote_addr;

keepalive 連接數(shù)N;

? ? ? ? ??為每個(gè)worker進(jìn)程保留的空閑的長連接數(shù)量,可節(jié)約nginx端口火欧,并減少連 接管理的消耗

? ??????????health_check [parameters];

健康狀態(tài)檢測機(jī)制棋电;只能用于location上下文

常用參數(shù):

interval=time檢測的頻率,默認(rèn)為5秒

fails=number:判定服務(wù)器不可用的失敗檢測次數(shù)苇侵;默認(rèn)為1次

passes=number:判定服務(wù)器可用的失敗檢測次數(shù)赶盔;默認(rèn)為1次

uri=uri:做健康狀態(tài)檢測測試的目標(biāo)uri;默認(rèn)為/

match=NAME:健康狀態(tài)檢測的結(jié)果評(píng)估調(diào)用此處指定的match配置塊

注意:僅對(duì)nginx plus有效

? ??????????match name { ... }

對(duì)backend server做健康狀態(tài)檢測時(shí)榆浓,定義其結(jié)果判斷機(jī)制于未;只能用于http上下 文

常用的參數(shù):

status? code[? code ...]: 期望的響應(yīng)狀態(tài)碼

header? HEADER[operator? value]:期望存在響應(yīng)首部,也可對(duì)期望的響 應(yīng)首部的值基于比較操作符和值進(jìn)行比較

body:期望響應(yīng)報(bào)文的主體部分應(yīng)該有的內(nèi)容

注意:僅對(duì)nginx plus有效

15.ngx_stream_core_module模塊 的配置使用:

模擬反代基于tcp或udp的服務(wù)連接,即工作于傳輸層的反代或調(diào)度器

? ??????????stream { ... }

定義stream相關(guān)的服務(wù)烘浦;

用于上下文:main

stream {

upstream mysqlsrvs {

server 192.168.22.2:3306;

server 192.168.22.3:3306;

least_conn;

}

server {

listen 10.1.0.6:3306;

proxy_pass mysqlsrvs;

}

}

listen

listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

16.ngx_stream_proxy_module模塊 ?的配置使用:

可實(shí)現(xiàn)代理基于TCP抖坪,UDP (1.9.13), UNIX-domain sockets的數(shù)據(jù)流

? ??????????proxy_pass address;

? ? ? ? ? ??指定后端服務(wù)器地址

? ? ? ? ? ??proxy_timeout timeout;

? ? ? ? ? ??無數(shù)據(jù)傳輸時(shí),保持連接狀態(tài)的超時(shí)時(shí)長? 默認(rèn)為10m

? ? ? ? ? ? ?proxy_connect_timeout time;

? ? ? ? ? ??設(shè)置nginx與被代理的服務(wù)器嘗試建立連接的超時(shí)時(shí)長? 默認(rèn)為60s

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闷叉,一起剝皮案震驚了整個(gè)濱河市擦俐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌握侧,老刑警劉巖蚯瞧,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異藕咏,居然都是意外死亡状知,警方通過查閱死者的電腦和手機(jī)秽五,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門孽查,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坦喘,你說我怎么就攤上這事盲再。” “怎么了瓣铣?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵答朋,是天一觀的道長。 經(jīng)常有香客問我棠笑,道長梦碗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任蓖救,我火速辦了婚禮洪规,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘循捺。我一直安慰自己斩例,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布从橘。 她就那樣靜靜地躺著念赶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恰力。 梳的紋絲不亂的頭發(fā)上叉谜,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音踩萎,去河邊找鬼正罢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翻具。 我是一名探鬼主播履怯,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼裆泳!你這毒婦竟也來了叹洲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤工禾,失蹤者是張志新(化名)和其女友劉穎运提,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闻葵,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡民泵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了槽畔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栈妆。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖厢钧,靈堂內(nèi)的尸體忽然破棺而出鳞尔,到底是詐尸還是另有隱情,我是刑警寧澤早直,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布寥假,位于F島的核電站,受9級(jí)特大地震影響霞扬,放射性物質(zhì)發(fā)生泄漏糕韧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一喻圃、第九天 我趴在偏房一處隱蔽的房頂上張望萤彩。 院中可真熱鬧,春花似錦级及、人聲如沸乒疏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怕吴。三九已至县踢,卻和暖如春转绷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背硼啤。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工议经, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓煞肾,卻偏偏與公主長得像咧织,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子籍救,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • 半夜醒來习绢,看墻上掛鐘為三點(diǎn)。外面夜色正隆蝙昙。窗外有滴嗒滴嗒空調(diào)滴雨的聲闪萄。扭亮手機(jī)看微信,某人轉(zhuǎn)的一篇文章肯定朝鮮的計(jì)...
    喬橋閱讀 155評(píng)論 1 2
  • 對(duì)刻苦訓(xùn)練的耐力跑者而言而言圆裕,速度是一個(gè)令人咬牙的課題。盡管知道透過訓(xùn)練可以增加本身的速度本能缺菌,但通過裝備調(diào)整葫辐、飲...
    馬拉松跑步健身閱讀 455評(píng)論 0 3
  • 那些陽光燦爛的日子 --獻(xiàn)給松滋二中78屆同學(xué)畢業(yè)四十年 四十年前 男生是嫩芽 女生如花蕾 我們的目光純潔無瑕 不...
    仙泉閱讀 541評(píng)論 3 3