nginx

0.網(wǎng)站頁(yè)面訪(fǎng)問(wèn):
a.網(wǎng)站頁(yè)面訪(fǎng)問(wèn)流程:
01.客戶(hù)端 瀏覽器輸入網(wǎng)址信息點(diǎn)擊回車(chē)
02.客戶(hù)端 完成域名的解析過(guò)程(DNS)嫁佳、
03.客戶(hù)端 直接訪(fǎng)問(wèn)相應(yīng)網(wǎng)站服務(wù)器 建立TCP三次握手過(guò)程
04.客戶(hù)端 訪(fǎng)問(wèn)網(wǎng)站服務(wù)器 發(fā)送HTTP請(qǐng)求報(bào)文
05.服務(wù)端 響應(yīng)客戶(hù)端請(qǐng)求 回復(fù)HTTP響應(yīng)報(bào)文
06.客戶(hù)端 瀏覽器看到網(wǎng)站頁(yè)面
07.客戶(hù)端 結(jié)束訪(fǎng)問(wèn)網(wǎng)站過(guò)程 完成TCP四次揮手過(guò)程
b.HTTP協(xié)議請(qǐng)求和響應(yīng)過(guò)程
01.HTTP請(qǐng)求報(bào)文
1) 請(qǐng)求行
請(qǐng)求方法: get --讀/看 --獲取/拿過(guò)來(lái)
post --寫(xiě)/提交
請(qǐng)求信息: index.html(首頁(yè)文件)
請(qǐng)求協(xié)議: http1.1 1.0短連接 1.1長(zhǎng)連接 2.0 長(zhǎng)TCP連接
2)請(qǐng)求頭:
請(qǐng)求主機(jī)信息
3)空行
4)請(qǐng)求主體
使用get方法時(shí)院领,沒(méi)有請(qǐng)求主體信息
使用POST方法時(shí)梳杏,具有請(qǐng)求主體內(nèi)容
02.HTTP響應(yīng)報(bào)文
1)起始行
***** 狀態(tài)碼信息 訪(fǎng)問(wèn)請(qǐng)求是成功響應(yīng)/失敗響應(yīng)
1XX:信息狀態(tài)碼
狀態(tài)碼 含義 描述
100 繼續(xù) 初始的請(qǐng)求已經(jīng)接受侯养,請(qǐng)客戶(hù)端繼續(xù)發(fā)送剩余部分
101 切換協(xié)議 請(qǐng)求這要求服務(wù)器切換協(xié)議拍鲤,服務(wù)器已確定切換
2XX:成功狀態(tài)碼
狀態(tài)碼 含義 描述
200 成功 服務(wù)器已成功處理了請(qǐng)求
201 已創(chuàng)建 請(qǐng)求成功并且服務(wù)器創(chuàng)建了新的資源
202 已接受 服務(wù)器已接受請(qǐng)求,但尚未處理
203 非授權(quán)信息 服務(wù)器已成功處理請(qǐng)求忍疾,但返回的信息可能來(lái)自另一個(gè)來(lái)源
204 無(wú)內(nèi)容 服務(wù)器成功處理了請(qǐng)求闯传,但沒(méi)有返回任何內(nèi)容
205 重置內(nèi)容 服務(wù)器處理成功,用戶(hù)終端應(yīng)重置文檔視圖
206 部分內(nèi)容 服務(wù)器成功處理了部分GET請(qǐng)求
3XX:重定向狀態(tài)碼
狀態(tài)碼 含義 描述
300 多種選擇 針對(duì)請(qǐng)求卤妒,服務(wù)器可執(zhí)行多種操作
****301 永久移動(dòng) 請(qǐng)求的頁(yè)面已永久跳轉(zhuǎn)到新的url
****302 臨時(shí)移動(dòng) 服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求甥绿,但請(qǐng)求仍繼續(xù)使用原有位置來(lái)進(jìn)行以后的請(qǐng)求
303 查看其他位置 請(qǐng)求者應(yīng)當(dāng)對(duì)不同的位置使用單獨(dú)的GET請(qǐng)求來(lái)檢索響應(yīng)時(shí),服務(wù)器返回此代碼
304 未修改 自從上次請(qǐng)求后则披,請(qǐng)求的網(wǎng)頁(yè)未修改過(guò)
305 使用代理 請(qǐng)求者只能使用代理訪(fǎng)問(wèn)請(qǐng)求的網(wǎng)頁(yè)
307 臨時(shí)重定向 服務(wù)器目前從不同位置的網(wǎng)頁(yè)響應(yīng)請(qǐng)求共缕,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來(lái)進(jìn)行以后的請(qǐng)求
4XX:客戶(hù)端錯(cuò)誤狀態(tài)碼
狀態(tài)碼 含義 描述
400 錯(cuò)誤請(qǐng)求 服務(wù)器不理解請(qǐng)求的語(yǔ)法
****401 未授權(quán) 請(qǐng)求要求用戶(hù)的身份演驗(yàn)證
****403 禁止 服務(wù)器拒絕請(qǐng)求
****404 未找到 服務(wù)器找不到請(qǐng)求的頁(yè)面
405 方法禁用 禁用請(qǐng)求中指定的方法
406 不接受 無(wú)法使用請(qǐng)求的內(nèi)容特性響應(yīng)請(qǐng)求的頁(yè)面
407 需要代理授權(quán) 請(qǐng)求需要代理的身份認(rèn)證
408 請(qǐng)求超時(shí) 服務(wù)器等候請(qǐng)求時(shí)發(fā)生超時(shí)
409 沖突 服務(wù)器在完成請(qǐng)求時(shí)發(fā)生沖突
410 已刪除 客戶(hù)端請(qǐng)求的資源已經(jīng)不存在
411 需要有效長(zhǎng)度 服務(wù)器不接受不含有效長(zhǎng)度表頭字段的請(qǐng)求
412 未滿(mǎn)足前提條件 服務(wù)器未滿(mǎn)足請(qǐng)求者在請(qǐng)求中設(shè)置的其中一個(gè)前提條件
413 請(qǐng)求實(shí)體過(guò)大 由于請(qǐng)求實(shí)體過(guò)大,服務(wù)器無(wú)法處理士复,因此拒絕請(qǐng)求
414 請(qǐng)求url過(guò)長(zhǎng) 請(qǐng)求的url過(guò)長(zhǎng)图谷,服務(wù)器無(wú)法處理
415 不支持格式 服務(wù)器無(wú)法處理請(qǐng)求中附帶媒體格式
416 范圍無(wú)效 客戶(hù)端請(qǐng)求的范圍無(wú)效
417 未滿(mǎn)足期望 服務(wù)器無(wú)法滿(mǎn)足請(qǐng)求表頭字段要求
5XX:服務(wù)端錯(cuò)誤狀態(tài)碼
狀態(tài)碼 含義 描述
500 服務(wù)器錯(cuò)誤 服務(wù)器內(nèi)部錯(cuò)誤翩活,無(wú)法完成請(qǐng)求
501 尚未實(shí)施 服務(wù)器不具備完成請(qǐng)求的功能
****502 錯(cuò)誤網(wǎng)關(guān) 服務(wù)器作為網(wǎng)關(guān)或代理出現(xiàn)錯(cuò)誤
503 服務(wù)不可用 服務(wù)器目前無(wú)法使用
504 網(wǎng)關(guān)超時(shí) 網(wǎng)關(guān)或代理服務(wù)器,未及時(shí)獲取請(qǐng)求
505 不支持版本 服務(wù)器不支持請(qǐng)求中使用的HTTP協(xié)議版本
2)響應(yīng)頭部
3)空行
4)響應(yīng)主體
03.HTTP協(xié)議資源信息:
a.URL:uniform resource location 統(tǒng)一資源定位
URI:uniform resource Identifier 統(tǒng)一資源標(biāo)識(shí)符
docs.ansible.com / ansible/latest/user_guide/playbooks.html
URL URI
b.網(wǎng)站頁(yè)面靜態(tài)資源: 要什么給什么
特點(diǎn): 01.網(wǎng)頁(yè)內(nèi)容固定不變的便贵,容易被搜索引擎搜索到
02.網(wǎng)頁(yè)沒(méi)有數(shù)據(jù)庫(kù)支持,所以在網(wǎng)站制作和維護(hù)方面工作量大
當(dāng)網(wǎng)站信息量大時(shí)菠镇,完全依靠靜態(tài)網(wǎng)頁(yè)比較困難
03.網(wǎng)頁(yè)的交互性較差,在程序的功能實(shí)現(xiàn)方面有較大的限制
04.當(dāng)客戶(hù)端向服務(wù)端請(qǐng)求數(shù)據(jù)時(shí)承璃,服務(wù)器直接從磁盤(pán)文件系統(tǒng)上返回?cái)?shù)據(jù)(不做任何解析)
c.網(wǎng)站頁(yè)面動(dòng)態(tài)資源: 要什么信息利耍,需要進(jìn)行查詢(xún)數(shù)據(jù)庫(kù)進(jìn)行解析后發(fā)送給客戶(hù)端
特點(diǎn): 01.采用動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)的網(wǎng)站可以實(shí)現(xiàn)更多的功能,如用戶(hù)注冊(cè)盔粹,登錄隘梨,在線(xiàn)調(diào)查,投票舷嗡,用戶(hù)管理轴猎,訂單處理,發(fā)博文等
02.動(dòng)態(tài)資源頁(yè)面會(huì)出現(xiàn)“进萄?” “&”不便于被搜索引擎收錄
03.接收到用戶(hù)請(qǐng)求捻脖,需要讓動(dòng)態(tài)服務(wù)和數(shù)據(jù)庫(kù)服務(wù)進(jìn)行處理
d.偽靜態(tài)資源:
特點(diǎn): 1.可以便于搜索引擎進(jìn)行收錄
2.有數(shù)據(jù)庫(kù)服務(wù)支持,實(shí)現(xiàn)網(wǎng)頁(yè)交互功能
04.網(wǎng)站好壞指標(biāo):
a. IP:根據(jù)用戶(hù)IP地址數(shù)量進(jìn)行統(tǒng)計(jì) 300-400萬(wàn) 一個(gè)星期
局域網(wǎng)多個(gè)用戶(hù)訪(fǎng)問(wèn): 網(wǎng)站服務(wù)器只記錄一個(gè)IP訪(fǎng)問(wèn)垮斯,NAT技術(shù)
b. PV:頁(yè)面訪(fǎng)問(wèn)量 700-800萬(wàn) 一個(gè)星期
c. UV: 記錄獨(dú)立訪(fǎng)客數(shù)量
cookie: 標(biāo)識(shí)用戶(hù)身份信息郎仆,會(huì)保存在用戶(hù)客戶(hù)端本地 內(nèi)存中
session: 記錄用戶(hù)的一些會(huì)話(huà)操作, eg: 記錄用戶(hù)登錄信息 記錄在服務(wù)端 內(nèi)存中
d.網(wǎng)站的并發(fā): 網(wǎng)站服務(wù)器在單位時(shí)間內(nèi)能夠處理的最大連接數(shù)

1.nginx服務(wù)軟件的特點(diǎn):

a.支持高并發(fā)兜蠕,消耗內(nèi)存資源少
b.具有多種功能:
01.網(wǎng)站web服務(wù)功能 --- apache
02.網(wǎng)站負(fù)載均衡功能 --- LVS
03.網(wǎng)站緩存服務(wù) --- squid
c.在多種系統(tǒng)平臺(tái)都可以進(jìn)行部署
d.nginx實(shí)現(xiàn)網(wǎng)絡(luò)通訊時(shí)使用的是異步網(wǎng)絡(luò)IO模型: epoll模型(apache --select
01.epoll模型:
宿舍管理員: 找人,查看人員登記信息
幼兒園阿姨: 小朋友上WC抛寝,都站在教室的某個(gè)位置
性能:隨著連接數(shù)的增加熊杨,性能基本上不會(huì)下降,連接數(shù)無(wú)限制
02.select模型:
宿舍管理員:找人盗舰,一個(gè)一個(gè)屋子去問(wèn)晶府,--線(xiàn)性輪詢(xún)
幼兒園阿姨:小朋友上WC,一個(gè)一個(gè)小朋友去詢(xún)問(wèn)
性能:隨著連接數(shù)的增加急劇下降钻趋,處理成千上成并發(fā)連接數(shù)川陆,性能很差,連接數(shù)不超過(guò)1024
2.nginx的安裝(兩種安裝方式)
01.yum安裝軟件:
a.使用官方y(tǒng)um源安裝蛮位, 安裝的是最新版本较沪,軟件目錄結(jié)構(gòu)比較標(biāo)準(zhǔn)(推薦)
b.使用非官方y(tǒng)um源進(jìn)行安裝 安裝的不是最新版 目錄結(jié)構(gòu)會(huì)發(fā)生變化
02.編譯安裝軟件
a.wget http://nginx.org/download/nginx-1.16.0.tar.gz
PS:解決軟件的依賴(lài) openssl-devel pcre-devel
b.解壓下載好的軟件,并進(jìn)入到軟件目錄中
c.編譯安裝三步曲
01. ./configure --prefix= --user=USER
--prefix=PATH --set installation prefix 指定程序安裝路徑
--user=USER --set non-priivleged user for worker processes 設(shè)置一個(gè)虛擬用戶(hù)管理worker進(jìn)程(安全)
--group=GROUP --set non-priivleged group for worker processes 設(shè)置一個(gè)虛擬用戶(hù)組管理worker進(jìn)程(安全)
02.進(jìn)行軟件的編譯過(guò)程:
make 編譯
03.編譯安裝過(guò)程
make install
03.YUM官方源安裝方法:
a.更新nginx官方源
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
b. yum安裝nginx軟件
yum install -y nginx
c.啟動(dòng)nginx服務(wù)失仁,檢查服務(wù)是否安裝正確
systemctl start nginx
systemctl enable nginx
04.nginx軟件目錄結(jié)構(gòu)
a./etc/logrotate.d/nginx --用于日志輪詢(xún)切割
root@nginx logrotate.d]# vim /etc/logrotate.conf

rotate log files weekly

weekly ---定義默認(rèn)日志切割的周期

keep 4 weeks worth of backlogs

rotate 4 ---定義只保留幾個(gè)切割后的文件

create new (empty) log files after rotating old ones

create ---創(chuàng)建出一個(gè)相同的源文件

use date as a suffix of the rotated file

dateext 時(shí)間擴(kuò)展名稱(chēng) ---定義角標(biāo)(擴(kuò)展名稱(chēng)信息)

uncomment this if you want your log files compressed

compress ---是否對(duì)切割后的文件進(jìn)行壓縮處理

RPM packages drop log rotation information into this directory

include /etc/logrotate.d ---加載包含/etc/logrotate.d/目錄中的文件配置

no packages own wtmp and btmp -- we'll rotate them here

/var/log/wtmp { ---單獨(dú)對(duì)某個(gè)文件進(jìn)行切割配置
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}

system-specific logs may be also be configured here.

    b./etc/nginx/nginx.conf                 --nginx主配置文件
      /etc/nginx/conf.d/default.conf 
      /etc/nginx/conf.d/
    c./etc/nginx/mime.types                 --http協(xié)議的content-type與擴(kuò)展名
    d./etc/nginx/fastcgi_params             --cgi,fastcgi,uwcgi配置文件
      /etc/nginx/scgi_params
      /etc/nginx/uwsgi_params
    e./etc/nginx/koi-utf                    --nginx編碼轉(zhuǎn)換映射文件
      /etc/nginx/koi-win
      /etc/nginx/win-utf
    f./etc/sysconfig/nginx                  --nginx服務(wù)守護(hù)進(jìn)程管理文件
      /etc/sysconfig/nginx-debug
    g./etc/nginx/modules
      /usr/lib64/nginx
      /user/lib64/nginx/modules             --nginx模塊目錄
    h./usr/share/nginx                      --nginx默認(rèn)站點(diǎn)目錄
    i./var/log/nginx                        --nginx日志目錄信息 

05.nginx服務(wù)配置文件
/etc/nginx/nginx.conf ---主配置文件
/etc/nginx/nginx.d/default ---擴(kuò)展配置(虛擬主機(jī)配置文件)
[root@mysql ~]# vim /etc/nginx/nginx.conf
第一部分:配置文件主區(qū)域配置
user nginx; ---定義worker進(jìn)程管理的用戶(hù)
PS: master process: 主進(jìn)程 ---管理服務(wù)是否能夠正常運(yùn)行 BOSS
worker process: 工作進(jìn)程 ---處理用戶(hù)的訪(fǎng)問(wèn)請(qǐng)求 員工
worker_processes 1; ---定義有幾個(gè)worker進(jìn)程的 ==cpu核數(shù) 最多cpu核數(shù)2倍
error_log /var/log/nginx/error.log warn; ---定義錯(cuò)誤日志
pid /var/run/nginx.pid; ---定義pid文件路徑
第二部分:配置文件事件區(qū)域
events {
worker_connections 1024; ---一個(gè)worker進(jìn)程可以同時(shí)接收1024個(gè)請(qǐng)求(可調(diào)整)
}
第三部分:配置http區(qū)域
http {
include /etc/nginx/mime.types; ---加載配置文件
default_type application/octet-stream; ---指定默認(rèn)識(shí)別文件類(lèi)型

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
                   ---指定日志路徑
access_log  /var/log/nginx/access.log  main;    ---指定日志路徑

sendfile        on;
#tcp_nopush     on;
keepalive_timeout  65;                          ---超時(shí)時(shí)間
#gzip  on;
include /etc/nginx/conf.d/*.conf;               ---加載一個(gè)配置文件

}
第四部分:
[root@mysql conf.d]# cat default.conf
server {
listen 80; ---指定監(jiān)聽(tīng)的端口
server_name localhost; ---指定網(wǎng)站域名
location / {
root /usr/share/nginx/html; ---定義站點(diǎn)目錄的位置
index index.html index.htm; ---定義首頁(yè)文件
}
error_page 500 502 503 504 /50x.html; ---優(yōu)雅顯示頁(yè)面
location = /50x.html {
root /usr/share/nginx/html;
}

}
3.nginx服務(wù)的企業(yè)應(yīng)用
01.利用nginx服務(wù)搭建一個(gè)網(wǎng)站(www)
1)編寫(xiě)虛擬主機(jī)配置文件
cd /etc/nginx/conf.d/
[root@mysql conf.d]# vim www.conf

            server {
               listen        80;
               server_name   www.lin.com;
               location      /lin {
                  root     /usr/share/nginx/html;
                 index     lin.html;
                 }
            }
       2)需要開(kāi)發(fā)編寫(xiě)的網(wǎng)站代碼

<html>
<meta charset="utf-8">
<head>
<title>你是最牛的</title>
</head>
<body>
我們是最強(qiáng)的尸曼,我們是最努力的
<table border=1>
<tr> <td>01</td> <td> </td> </tr>
<tr> <td>02</td> <td> </td> </tr>
<tr> <td>03</td> <td> </td> </tr>
</table>
<a >
<img src="lin.jpg" />
</a>
</body>
</html>
3)重啟nignx服務(wù)(平滑重啟) ---兩種方法,不要混合用萄焦,用一種控轿,混合容易出問(wèn)題
a.systemctl reload nginx
b.nginx -s reload
c.nginx命令參數(shù) -t 檢查測(cè)試配置文件語(yǔ)法
4)編寫(xiě)DNS配置信息
真實(shí)域名: 在阿里云上進(jìn)行DNS解析記錄配置
模擬域名: 在windows主機(jī)的hosts文件中進(jìn)行配置就行 C:\Windows\System32\drivers\etc\hosts
5)進(jìn)行測(cè)試訪(fǎng)問(wèn): www.lin.com
6)部署搭建網(wǎng)站常見(jiàn)錯(cuò)誤:
1)網(wǎng)站服務(wù)配置文件編寫(xiě)不正確
404 錯(cuò)誤
解決方法-:修改nginx配置文件--- location
解決方法二: 在站點(diǎn)目錄中創(chuàng)建相應(yīng)目錄或文件數(shù)據(jù)信息
403 錯(cuò)誤
解決方法一: 不要禁止訪(fǎng)問(wèn)
解決方法二: 因?yàn)闆](méi)有首頁(yè)文件
2)DNS信息配置不正確
3)nginx配置文件修改一定要重啟服務(wù);
站點(diǎn)目錄中代碼文件信息調(diào)整,不需要重啟服務(wù)
02.利用nignx服務(wù)搭建一個(gè)多網(wǎng)站(www bbs blog)
第一個(gè)歷程:創(chuàng)建多個(gè)虛擬主機(jī)配置文件
[root@mysql conf.d]# cat www.conf bbs.conf blog.conf
server {
listen 80;
server_name www.lin.com;
location / {
root /html/www;
index index.html;
}
}
server {
listen 80;
server_name bbs.lin.com;
location / {
root /html/bbs;
index index.html;
}
}
server {
listen 80;
server_name blog.lin.com;
location / {
root /html/blog;
index index.html;
}
}
第二個(gè)歷程:創(chuàng)建站點(diǎn)目錄和目錄中首頁(yè)文件
[root@mysql conf.d]# for name in {www,bbs,blog};do echo "192.168.3.18 name.lin.com" >/html/name/index.html ; done
[root@mysql conf.d]# for name in {www,bbs,blog};do cat /html/$name/index.html; done
重啟服務(wù) systemctl reload nginx
第三個(gè)歷程:編寫(xiě)hosts解析文件
192.168.3.18 www.lin.com bbs.lin.com blog.lin.com
第四個(gè)歷程:進(jìn)行測(cè)試訪(fǎng)問(wèn)
curl www.lin.com
curl bbs.lin.com
curl blog.lin.com
03.企業(yè)中虛擬主機(jī)訪(fǎng)問(wèn)方式
a.基于域名的方式進(jìn)行訪(fǎng)問(wèn)
b.基于地址的方式進(jìn)行訪(fǎng)問(wèn):(只能用指定地址訪(fǎng)問(wèn))
原因:當(dāng)一個(gè)主機(jī)多個(gè)IP時(shí)茬射,要綁定一個(gè)IP鹦蠕,不然多個(gè)IP都能訪(fǎng)問(wèn)
方法: 在listen綁定監(jiān)聽(tīng)I(yíng)P,一定要restart不能用reload重啟
server {
listen 192.168.3.18:80; --在監(jiān)聽(tīng)地址這綁定IP地址
server_name www.lin.com;
location / {
root /html/www;
index index.html;
}
}
[root@mysql nginx]# netstat -tlnup|grep 80
tcp 0 0 192.168.3.18:80 0.0.0.0:* LISTEN 20431/nginx: master
一個(gè)主機(jī)有多個(gè)網(wǎng)站時(shí)(比如BBS,www,BLOG)在conf配置文件要配置上
include /etc/nginx/conf.d/www.conf; --按第一個(gè)順序在抛,如果輸入192.168.3.18就顯示的是www.lin.com
include /etc/nginx/conf.d/*.conf; --如果沒(méi)寫(xiě)上一個(gè)片部,只有這個(gè),就會(huì)是BBS.lin.com按的是字母的順序
PS:服務(wù)配置文件中涉及到地址修改霜定,必須重啟nginx服務(wù)restart档悠,不能平滑重啟reload不行

    c.基于端口的方式進(jìn)行訪(fǎng)問(wèn)(多個(gè)占用80比如zabbix要用到apache80)
       server {

listen 8080;
server_name www.lin.com;
location / {
root /html/www;
index index.html;
}
}
d.網(wǎng)站頁(yè)面訪(fǎng)問(wèn)原理
01.將域名進(jìn)行解析 www.lin.com
02.建立TCP的連接(四層協(xié)議)
192.168.3.18 目標(biāo)端口 80
03.根據(jù)應(yīng)用層HTTP協(xié)議發(fā)出請(qǐng)求
請(qǐng)求報(bào)文:hosts: www.lin.com
04.沒(méi)有相同域名的server主機(jī),會(huì)找滿(mǎn)足端口要求的第一個(gè)主機(jī)
www 8080 bbs 80 blog 80
www.lin.com --顯示的是bbs.lin.com 因?yàn)榻馕龀?92.168.3.18 www端口不對(duì)望浩,就找BBS
bbs.lin.com:8080 --顯示的是www.lin.com 也是先解析,端口8080要找www
4.企業(yè)中網(wǎng)站的安全訪(fǎng)問(wèn)配置
a.根據(jù)用戶(hù)訪(fǎng)問(wèn)的地址進(jìn)行控制
192.168.3.18 www.lin.com/video/ 可以訪(fǎng)問(wèn) 內(nèi)網(wǎng)
10.0.0.18 www.lin.com/video/ 不可訪(fǎng)問(wèn) 外網(wǎng)
nginx訪(fǎng)問(wèn)模塊: ngx_http_access_module
舉例配置:
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
指令用法:
Syntax: allow address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
第一個(gè)歷程:編寫(xiě)配置文件
server {
listen 192.168.3.18:80;
server_name www.lin.com;
location / {
root /html/www;
index index.html;
}
location /video { --每個(gè)loaction都是一個(gè)局部配置辖所,所以要寫(xiě)上站點(diǎn)目錄,不然是默認(rèn)的
root /html/www;
index index.html;
deny 192.168.3.20;
allow 192.168.3.12;
}
}
PS: location外面的信息磨德,全局配置信息
location里面的信息缘回,局部配置信息
b.根據(jù)用戶(hù)訪(fǎng)問(wèn)進(jìn)行認(rèn)證
nginx認(rèn)證模塊Module ngx_http_auth_basic_module
舉例配置:
location / {
auth_basic "closed site"; --開(kāi)啟認(rèn)證功能 "closed site"引號(hào)內(nèi)容可自己寫(xiě),就是個(gè)說(shuō)明
auth_basic_user_file conf/htpasswd; ---加載用戶(hù)密碼文件
}
第一個(gè)歷程:編寫(xiě)虛擬主機(jī)配置文件
[root@mysql www]# vim /etc/nginx/conf.d/www.conf

                server {
                   listen       192.168.3.18:80;
                   server_name   www.lin.com;
                   location      / {
                      root     /html/www;
                     index     index.html;
                     auth_basic           "請(qǐng)輸入密碼:";
                     auth_basic_user_file conf/htpasswd;
                     }
                   location     /video {
                      root     /html/www;
                     index     index.html;
                      deny 192.168.3.20;
                      allow 192.168.3.12;
                }
                }
        第二個(gè)歷程:創(chuàng)建密碼文件(文件中密碼信息必須是密文的)
            htpasswd 創(chuàng)建一個(gè)有密文信息的密碼文件
                [root@mysql www]# rpm -qf `which htpasswd`
                 httpd-tools-2.4.6-89.el7.centos.x86_64
           htpasswd命令參數(shù)說(shuō)明
             -c  Create a new file. *****
                 創(chuàng)建一個(gè)密碼文件
             -n  Don't update file; display results on stdout.  
                 不會(huì)更新文件典挑,顯示文件內(nèi)容信息
             -b  Use the password from the command line rather than prompting for it.*****
                   免交互方式輸入用戶(hù)密碼信息
             -i  Read password from stdin without verification (for script usage).
                 讀取密碼采用標(biāo)準(zhǔn)輸入方式酥宴,并不做檢查
             -m  Force MD5 encryption of the password (default).
             -B  Force bcrypt encryption of the password (very secure).
             -C  Set the computing time used for the bcrypt algorithm
                 (higher is more secure but slower, default: 5, valid: 4 to 31).
             -d  Force CRYPT encryption of the password (8 chars max, insecure).
             -s  Force SHA encryption of the password (insecure).
             -p  Do not encrypt the password (plaintext, insecure).
             -D  Delete the specified user.
             -v  Verify password for the specified user.
         修改密碼文件權(quán)限:
         [root@mysql password]# chmod 600 htpasswd 
         [root@mysql password]# chown nginx.nginx htpasswd
         500 internal server error
         01.內(nèi)部程序代碼編寫(xiě)有問(wèn)題
         02.程序服務(wù)中文件權(quán)限不正確
5.nginx的企業(yè)實(shí)踐應(yīng)用
      1)利用nginx服務(wù)搭建網(wǎng)站文件共享服務(wù)器
        第一個(gè)步驟:編寫(xiě)配置文件(www.conf)
        nginx模塊功能: ngx_http_autoindex_module
        nginx語(yǔ)法:Syntax: autoindex on | off;
                     Default:   autoindex off;    ---默認(rèn)是關(guān)的,要用on來(lái)打開(kāi)
                     Context:   http, server, location
        配置文件設(shè)置:server {
                       listen       192.168.3.18:80;
                       server_name   www.lin.com;
                         location     /video {
                          root     /html/www;
                         index     index.html;
                          deny 192.168.3.20;
                          allow 192.168.3.12;
                         auth_basic           "請(qǐng)輸入密碼:";
                         auth_basic_user_file password/htpasswd;
                         autoindex on;       ---主要把這個(gè)設(shè)置打開(kāi)您觉,開(kāi)啟nginx站點(diǎn)目錄索引功能
                    }
                    }
         PS:1.要把首頁(yè)文件進(jìn)行刪除拙寡,或改個(gè)名字,不然是首先加載首頁(yè)文件琳水。
            2.mime媒體資源類(lèi)型文件作用:
              [root@mysql nginx]# vim /etc/nginx/mime.types 
                types {
                text/html                                        html htm shtml;
                text/css                                         css;
                text/xml                
              a.文件中有的擴(kuò)展名信息資源肆糕,進(jìn)行訪(fǎng)問(wèn)時(shí)直接看到數(shù)據(jù)
              b.文件中沒(méi)有的擴(kuò)展名信息資源,進(jìn)行訪(fǎng)問(wèn)時(shí)會(huì)直接下載資源
            3.重啟服務(wù)
            4.瀏覽器訪(fǎng)問(wèn)時(shí)的樣子:
            Index of /video/

../
centos6.9/ 17-Feb-2020 11:26 -
centos7.0/ 17-Feb-2020 11:26 -
centos7.5/ 17-Feb-2020 11:26 -
lin.html 17-Feb-2020 07:01 26

          5.網(wǎng)站頁(yè)面目錄數(shù)據(jù)在孝,中文出現(xiàn)亂碼诚啃,解決方法:
             nginx模塊功能:ngx_http_charset_module
             nginx語(yǔ)法:Syntax:    charset charset | off;
                        Default:    charset off;
                        Context:    http, server, location, if in location
             配置文件修改:server {

listen 192.168.3.18:80;
server_name www.lin.com;
location /video {
root /html/www;
index index.html;
deny 192.168.3.20;
allow 192.168.3.12;
auth_basic "請(qǐng)輸入密碼:";
auth_basic_user_file password/htpasswd;
charset utf-8; ---主要是增加這個(gè)charset,修改目錄結(jié)構(gòu)中的中文亂碼問(wèn)題
autoindex on;
}
}
6.利用nginx服務(wù)搭建配置文件別名功能
第一個(gè)歷程:編寫(xiě)配置文件
server_name www.lin.com l.com;
第二個(gè)歷程:配置好解析信息
作用: 01.編寫(xiě)網(wǎng)站訪(fǎng)問(wèn)測(cè)試
02.定位要訪(fǎng)問(wèn)的網(wǎng)站服務(wù)器
PS:定位是因?yàn)槎鄠€(gè)nginx時(shí),都是同樣的網(wǎng)址不好定位私沮,用別名好定位
7.利用nginx狀態(tài)模塊功能對(duì)網(wǎng)站進(jìn)行監(jiān)控
狀態(tài)模塊:ngx_http_stub_status_module
nginx語(yǔ)法:Syntax: stub_status;
Default: —
Context: server, location
1. 配置文件修改(重新編寫(xiě)一個(gè)配置始赎,用另一個(gè)server_name不然沖突了)
[root@mysql conf.d]# vim state.conf
server {
listen 80;
server_name state.lin.com;
stub_status;
}
2.重啟nginx服務(wù),并且編寫(xiě)解析文件
systemctl reload nginx
192.168.3.18 state.lin.com www.lin.com l.com
3.在瀏覽器中輸入state.lin.com
Active connections: 5 ---激活的連接數(shù)
server accepts handled requests
18 18 14
accepts:接收的連接數(shù)匯總(綜合)
handled:處理的連接數(shù)匯總(綜合)一般都是與accepts相同仔燕,除非資源上限了造垛,處理不過(guò)來(lái)
requests:總計(jì)的請(qǐng)求數(shù)量 HTTP協(xié)議請(qǐng)求,一個(gè)連接可有多個(gè)請(qǐng)求數(shù)量涨享,因?yàn)槭情L(zhǎng)連接
PS:在主配置文件nginx.conf中keepalive_timeout 0;設(shè)為0時(shí)就是短連接了筋搏,一個(gè)連接數(shù)就是一個(gè)請(qǐng)求數(shù)
Reading: 0 Writing: 1 Waiting: 4
Reading: nginx服務(wù)讀取請(qǐng)求報(bào)文的數(shù)量 100人點(diǎn)餐
Writing: nginx服務(wù)響應(yīng)報(bào)文信息數(shù)量 100人響應(yīng)
Waiting: nginx的隊(duì)列機(jī)制,要處理(讀取或響應(yīng)保存進(jìn)行保存) 20人排隊(duì)
8.網(wǎng)站日志功能配置
1)錯(cuò)誤日志:/var/log/nginx/error.log -- core functionality
Syntax: error_log file [level];
Default: error_log logs/error.log error;
Context: main, http, mail, stream, server, location
舉例配置:error_log /var/log/nginx/error.log warn;
錯(cuò)誤級(jí)別:
debug :調(diào)試級(jí)別,服務(wù)運(yùn)行的狀態(tài)信息和錯(cuò)誤信息詳細(xì)顯示 信息最多
info :信息級(jí)別厕隧,只顯示重要的運(yùn)行信息和錯(cuò)誤信息
notice :通知級(jí)別奔脐,更加重要的信息進(jìn)行通知說(shuō)明
warn :警告級(jí)別俄周,可能出現(xiàn)了一些錯(cuò)誤信息,但不影響服務(wù)運(yùn)行
error :錯(cuò)誤級(jí)別髓迎,服務(wù)運(yùn)行已經(jīng)出現(xiàn)了錯(cuò)誤峦朗,需要進(jìn)行糾正 推薦這個(gè)級(jí)別
crit :嚴(yán)重級(jí)別,必須進(jìn)行修改調(diào)整
alert :嚴(yán)重警告級(jí)別:即警告排龄,而且必須進(jìn)行錯(cuò)誤修改
emerg :災(zāi)難級(jí)別波势,服務(wù)已經(jīng)不能正常運(yùn)行 信息最少
2)訪(fǎng)問(wèn)日志:/var/log/nginx/access.log -- ngx_http_log_module
Syntax: access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
Default: access_log logs/access.log combined;
Context: http, server, location, if in location, limit_except
log_format main 'remote_addr -remote_user [time_local] "request" '
'statusbody_bytes_sent "http_referer" ' '"http_user_agent" "http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; PS:這個(gè)訪(fǎng)問(wèn)日志可放在location中,所有有多個(gè)網(wǎng)站橄维,如bbs,www,blog可在location中設(shè)置尺铣,這樣www,bbs,blog就有多個(gè)訪(fǎng)問(wèn)日志 舉例配置:server_name www.lin.com; location / { root /html/www; index index.html; access_log /var/log/nginx/www_access.log main; } 日志格式說(shuō)明:remote_addr 顯示用戶(hù)訪(fǎng)問(wèn)源IP地址信息
remote_user 顯示認(rèn)證的用戶(hù)信息(網(wǎng)站無(wú)認(rèn)證時(shí)會(huì)用-顯示) [time_local] 顯示訪(fǎng)問(wèn)網(wǎng)站時(shí)間
"request" 請(qǐng)求報(bào)文的請(qǐng)求行信息status 用戶(hù)訪(fǎng)問(wèn)網(wǎng)站的狀態(tài)碼信息
body_bytes_sent 顯示響應(yīng)的數(shù)據(jù)大小信息 "http_referer" 記錄調(diào)用網(wǎng)站資源的連接地址(防止用戶(hù)盜鏈)
"http_user_agent" 記錄用戶(hù)使用什么客戶(hù)端軟件進(jìn)行網(wǎng)頁(yè)訪(fǎng)問(wèn)(谷歌,IE争舞,火狐,安卓凛忿,IPHONE) "http_x_forwarded_for"' 負(fù)載均衡
PS:日志文件信息需要做切割處理
3)nginx服務(wù)location作用說(shuō)明
模塊說(shuō)明:ngx_http_core_module
location進(jìn)行匹配(uri)
錯(cuò)誤頁(yè)面優(yōu)雅顯示
location /lin {
root /html/www;
error_page 404 /wen.jpg
}
Location詳細(xì)配置
Syntax: location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
Default: —
Context: server, location
location = / { --- 精確匹配 優(yōu)先級(jí)最高 01
[ configuration A ]
}

          location / {                        ---默認(rèn)匹配     優(yōu)先級(jí)04 最低級(jí)
            [ configuration B ]
        }

          location /documents/ {              ---按照目錄進(jìn)行匹配   優(yōu)先級(jí)03
            [ configuration C ]
        }

          location ^~ /images/ {              ---優(yōu)先匹配/不識(shí)別URI信息中符號(hào)信息     優(yōu)先級(jí)02
            [ configuration D ]               ---比如下面的.要用到\來(lái)轉(zhuǎn)義
        }

          location ~* \.(gif|jpg|jpeg)$ {     ---不區(qū)分大小寫(xiě)進(jìn)行匹配   優(yōu)先級(jí)03
            [ configuration E ]
        }
    4)利用nginx實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)功能
       利用rewrite模塊的跳轉(zhuǎn)功能  http_rewrite_module
       Syntax:  rewrite regex replacement [flag]; rewrite匹配的正則信息,替換成什么信息
       Default: —         
       Context: server, location, if
       PS:flag --- permanent redirect --改寫(xiě)URL   breat last --這兩個(gè)是改寫(xiě)URI
       語(yǔ)法: rewrite ^/(.*)http://www.lin.com/$1 permanent; 重寫(xiě)規(guī)則配置
       PS:$1就是.*
       跳轉(zhuǎn)方式:
       永久跳轉(zhuǎn): permanent   301 會(huì)將跳轉(zhuǎn)信息進(jìn)項(xiàng)緩存
       臨時(shí)跳轉(zhuǎn): redirect    302 不會(huì)緩存跳轉(zhuǎn)信息
       出現(xiàn)無(wú)限跳轉(zhuǎn)解決方法:
         原因: lin.com會(huì)跳轉(zhuǎn)到www.lin.com  但是www.lin.com也是匹配rewrite的^/(.*)中的^
         第一種方法:利用不同server區(qū)塊配置打破循環(huán)
             server {
               listen       80;
               server_name   lin.com;
               rewrite ^/(.*) http://www.lin.com/$1 permanent;
            }
            server {
               listen       80;
               server_name   www.lin.com;
               location      / {
          第二種方法:利用if判斷實(shí)現(xiàn)打破循環(huán)
          server {
           listen       80;
           server_name   www.lin.com lin.com;
           if ($host ~* "^lin.com$") {
           rewrite ^/(.*) http://www.lin.com/$1 permanent;
           }
7.網(wǎng)站的LNMP架構(gòu)
   L   ---linux系統(tǒng)  selinux和防火墻關(guān)閉  /tmp 1777 
   N   ---nginx服務(wù)  作用:處理用戶(hù)的靜態(tài)請(qǐng)求  html jpg txt mp4/avi
   P   ---php服務(wù)    作用:處理動(dòng)態(tài)頁(yè)面請(qǐng)求竞川,負(fù)責(zé)和數(shù)據(jù)庫(kù)建立關(guān)系
   M   ---mysql服務(wù)部署  作用:存儲(chǔ)用戶(hù)的字符串?dāng)?shù)據(jù)信息
  02.網(wǎng)站的LNMP架構(gòu)部署
     a. nginx服務(wù)    ---ansible一鍵化部署店溢,修改yum源
     b. mysql服務(wù)部署:
         1)安裝數(shù)據(jù)庫(kù)軟件
         yum install mysql   
         PS:數(shù)據(jù)庫(kù)初始化過(guò)程 mysql_install_db
         --basedir=path
         --datadir=path
         --user=mysql   700
         
         2)啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)
         systemctl start mysql
         3)給數(shù)據(jù)庫(kù)服務(wù)設(shè)置密碼
         mysqladmin -u root password 'lin.1214'
  03.PHP服務(wù)部署流程
     第一個(gè)歷程:更新yum源/卸載系統(tǒng)自帶的PHP軟件
     yum remove php-mysql php php-fpm php-common
     rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
     rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
     第二個(gè)歷程:安裝php軟件(不要安裝最新 ,安裝穩(wěn)定版本)
     yum install -y php71w php71w-cli php71w-common php71w-devel php71w-fpm php71w-opcache php71w-gd php71w-mysqlnd php71w-mbstring php71w-pecl-redis php71w-pecl-memcached php71w-devel php71w-embedded php71w-mcrypt php71w-pdo php71w-xml php71w-pecl-mongodb
     第三個(gè)歷程:編寫(xiě)配置文件
     vim /etc/php-fpm.d/www.conf
     user = nginx
     group = nginx
     PS:保證nginx進(jìn)程的管理用戶(hù)和php服務(wù)進(jìn)程的管理用戶(hù)保持一致
     第四個(gè)歷程:?jiǎn)?dòng)php服務(wù)
     systemctl start php-fpm
     systemctl enable php-fpm
 04.LNMP架構(gòu)的原理
    nginx(fastcgi_pass) --FastCGI(不同程序之間要通過(guò)這種接口)-->(php-fpm -- wrapper) php(php解析器,翻譯成sql語(yǔ)句用)-->mysql(讀取或?qū)懭?
 05.實(shí)現(xiàn)lnmp之間建立關(guān)系
    1.實(shí)現(xiàn)nginx+php建立關(guān)系
       第一個(gè)歷程:編寫(xiě)nginx文件
       編寫(xiě)nginx配置文件: [root@mysql blog]# cd /etc/nginx/conf.d/
            [root@mysql conf.d]# vim blog.conf 
            server {
               listen        80;
               server_name   blog.lin.com;
               location      / {
                  root     /html/blog;
                 index     index.html;
                 }
              location ~ \.php$ {
                root /html/blog;
                fastcgi_index index.php;         URL           URI
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass 127.0.0.1:9000;
                include fastcgi_params;    ---變量配置文件
        重啟nginx服務(wù)委乌,并且編寫(xiě)解析文件
        第二個(gè)歷程:編寫(xiě)動(dòng)態(tài)資源文件
        vim /html/blog/test.php
         <?php
         phpinfo();
         ?>
        第三個(gè)歷程:進(jìn)行訪(fǎng)問(wèn)測(cè)試
         lin.blog.com/test.php
    2.實(shí)現(xiàn)php+mysql建立關(guān)系            
       編寫(xiě)php代碼文件
       [root@mysql blog]# vim /html/blog/mysql.php
        <?php
          $servername = "localhost";
          $username = "root";
          $password = "lin.1214";
          //$link_id=mysql_connect('主機(jī)名','用戶(hù)','密碼');
          //mysql -u用戶(hù) -p密碼 -h主機(jī)
          $conn = mysqli_connect($servername, $username, $password);
          if ($conn) {
                 echo "mysql successful by root !\n";
              }else{
                 die("Connection failed: ".mysqli_connect_error());
             }
        ?>
06.部署搭建網(wǎng)站頁(yè)面(代碼上線(xiàn))
   第一個(gè)歷程:獲取代碼信息(git) --使用開(kāi)源的網(wǎng)站代碼
   www網(wǎng)站頁(yè)面:http://www.dedecms.com/
   bbs網(wǎng)站頁(yè)面: https://www.discuz.net
   blog網(wǎng)站頁(yè)面:https://cn.wordpress.org/
   wecenter網(wǎng)站頁(yè)面:http://www.wecenter.com/
   第二個(gè)歷程:將代碼解壓床牧,將解壓后信息放入到站點(diǎn)目錄中
      tar xf wordpress-5.3.2-zh_CN.tar.gz -C /html/blog/
       mv wordpress/* /html/blog/
   第三個(gè)歷程:修改站點(diǎn)目錄權(quán)限
      chown -R nginx.nginx /html/blog
   第四個(gè)歷程:進(jìn)行網(wǎng)站頁(yè)面初始化操作
      lin.blog.com/index.php
      輸入一些信息: 比如用戶(hù): linwen 密碼lin.1214
      全輸入成功后,網(wǎng)頁(yè)顯示403這個(gè)是缺少首頁(yè)文件遭贸,在blog.conf加入index.php
      [root@mysql blog]# vim /etc/nginx/conf.d/blog.conf 
                server {
                   listen        80;
                   server_name   blog.lin.com;
                   location      / {
                      root     /html/blog;
                     index   index.php  index.html;
                     }

   第五個(gè)歷程:對(duì)數(shù)據(jù)庫(kù)服務(wù)進(jìn)行配置
      創(chuàng)建數(shù)據(jù)庫(kù):create database wordpress;
      創(chuàng)建數(shù)據(jù)庫(kù)管理用戶(hù): mysql> grant all privileges on wordpress.* to 'wordpress'@'localhost' identified by 'LinWen.1214';
   第六個(gè)歷程:利用blog網(wǎng)站發(fā)布博文
07.錯(cuò)誤解析
  1)上傳wordpress主題戈咳,報(bào)413錯(cuò)誤,如何解決
    第一個(gè)歷程:修改nignx配置文件 vim blog.conf
     server{
       client_max_body_size 50m;  --指定用戶(hù)上傳數(shù)據(jù)的大小限制默認(rèn)1M)
       }
    第二個(gè)歷程:修改php.ini配置文件
     upload_max_filesize= 50M  --使php接收用戶(hù)上傳的更大的數(shù)據(jù)(默認(rèn)2M)
  2)如何讓LNMP架構(gòu)和存儲(chǔ)服務(wù)器建立關(guān)系
    第一個(gè)歷程:找出圖片存儲(chǔ)的目錄
      01.第一種方法:根據(jù)圖片鏈接地址獲取圖片存儲(chǔ)位置
        http://blog.lin.com/wp-content/uploads/2020/01/lin.jpg
      02.第二種方法:定位數(shù)據(jù)存放在站點(diǎn)目錄中
        find /html/blog -tpe f -mmin -5 ---五分鐘以?xún)?nèi)的 mmin就是分鐘
        inotifywait -mrq /html/blog
    第二個(gè)歷程:使web服務(wù)器和存儲(chǔ)服務(wù)器建立關(guān)系
        檢查存儲(chǔ)服務(wù)是否正常
        編寫(xiě)存儲(chǔ)服務(wù)配置文件
        mkdir /data/{bbs,blog,www}
        將web服務(wù)器blog存儲(chǔ)的數(shù)據(jù)進(jìn)行遷移
        mv /tmp/2020 /html/blog/wp-content/uploads/
 3)默認(rèn)存儲(chǔ)服務(wù)器無(wú)法存儲(chǔ)數(shù)據(jù):
    管理用戶(hù)無(wú)法存儲(chǔ):root_squash  ---nfsnobody
    普通用戶(hù)無(wú)法存儲(chǔ): no_all_squash
    解決:第一個(gè)歷程:修改NFS配置文件革砸,定義映射用戶(hù)為nginx(或www)
    useradd nginx -u 1002
    chown -R www /data
    第二個(gè)歷程:使root用戶(hù)可以上傳數(shù)據(jù)
    sed -ri .bak 's#(sync)#\1,anonuid=1002,anongid=1002#g' /etc/exports
 4)如何讓LNMP架構(gòu)和數(shù)據(jù)庫(kù)服務(wù)器建立關(guān)系?
    第一個(gè)歷程:將web服務(wù)器本地?cái)?shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行備份
    mysqldump -uroot -plin.1214 --all-database >/tmp/web.sql
    第二個(gè)歷程:將備份數(shù)據(jù)進(jìn)行遷移
    scp -rp /tmp/web.sql 192.168.3.12:/tmp
    第三個(gè)歷程:恢復(fù)數(shù)據(jù)信息
     mysql -uroot -plin.1214 </tmp/web.sql
    第四個(gè)歷程:修改數(shù)據(jù)庫(kù)服務(wù)器中的用戶(hù)信息
    select  user,host from mysql.user
    優(yōu)化:刪除無(wú)用的用戶(hù)信息(就是空用戶(hù)的)
    delete from mysql.user where user="" and host="localhost";
    添加:添加新的用戶(hù)信息
    grant all privileges on wordpress.* to 'wordpress'@'192.168.3.%' identified by 'LinWen.1214';
    flush privileges;
    第五個(gè)歷程:修改web服務(wù)器代碼文件信息
    vim wp-config.php  --因?yàn)閹ぬ?hào)密碼和之前的一樣除秀,就是把主機(jī)改下就OK
    /** WordPress數(shù)據(jù)庫(kù)的名稱(chēng) */
        define( 'DB_NAME', 'wordpress' );

        /** MySQL數(shù)據(jù)庫(kù)用戶(hù)名 */
        define( 'DB_USER', 'wordpress' );

        /** MySQL數(shù)據(jù)庫(kù)密碼 */
        define( 'DB_PASSWORD', 'LinWen.1214' );

        /** MySQL主機(jī) */
        define( 'DB_HOST', 'localhost' );  -->define( 'DB_HOST','192.168.3.12');

        /** 創(chuàng)建數(shù)據(jù)表時(shí)默認(rèn)的文字編碼 */
        define( 'DB_CHARSET', 'utf8mb4' );

        /** 數(shù)據(jù)庫(kù)整理類(lèi)型。如不確定請(qǐng)勿更改 */
        define( 'DB_COLLATE', '' );
     第六個(gè)歷程:停止web服務(wù)器上數(shù)據(jù)庫(kù)服務(wù)
        systemctl stop mysqld
        systemctl disable mysqld
     問(wèn)題1:數(shù)據(jù)庫(kù)服務(wù)沒(méi)啟動(dòng)報(bào)錯(cuò):Error esttablishing a database connection
     問(wèn)題2:php沒(méi)有啟動(dòng)報(bào)錯(cuò):502 bad gateway
     問(wèn)題3:web01代碼信息遷移到web02服務(wù)器算利,并且修改了網(wǎng)站域名無(wú)法正確訪(fǎng)問(wèn)
     方法-:修改wordpress后臺(tái)設(shè)置信息,將后臺(tái)中老的域名改為新的域名
     方法二:修改數(shù)據(jù)庫(kù)中的一個(gè)表泳姐,在表中修改一個(gè)和域名有關(guān)的條目信息 update
  1. (反向代理)負(fù)載均衡
      01.(反向代理)負(fù)載均衡的概念
     集群:完成相同任務(wù)或工作的一組服務(wù)器(web01 web02 web03 --web集群)
    負(fù)載均衡:
      ⌒谩1)實(shí)現(xiàn)用戶(hù)訪(fǎng)問(wèn)請(qǐng)求進(jìn)行調(diào)度分配
       2)實(shí)現(xiàn)用戶(hù)訪(fǎng)問(wèn)壓力分擔(dān)
      反向代理:外網(wǎng) --->(eth0外網(wǎng)) 代理服務(wù)器(eth1內(nèi)網(wǎng)) ---> 公司網(wǎng)站服務(wù)器web(內(nèi)網(wǎng))
    外網(wǎng)用戶(hù)(客戶(hù)端) ---代理服務(wù)器(服務(wù)端)
    正向代理: 內(nèi)網(wǎng)(局域網(wǎng)主機(jī)) -- (內(nèi)網(wǎng))代理服務(wù)器(外網(wǎng)) ---互聯(lián)網(wǎng) ---web(服務(wù)器)
    02.集群服務(wù)器部署  
     ∨置搿PS:集群中每個(gè)服務(wù)器的配置一模一樣
    企業(yè)中: 01.先部署好一臺(tái)LNMP服務(wù)器缎患,上傳代碼信息
    02.進(jìn)行訪(fǎng)問(wèn)測(cè)試
    03.批量部署多臺(tái)web服務(wù)器
    04.將nginx配置文件進(jìn)行分發(fā)
    05.將站點(diǎn)目錄分發(fā)給所有主機(jī)
    利用手動(dòng)方式實(shí)現(xiàn)負(fù)載均衡:
      修改hosts主機(jī)地址和域名映射文件
    03.負(fù)載均衡服務(wù)器部署:
    第一個(gè)歷程:安裝部署nginx軟件
      yum install -y nginx
    第二個(gè)歷程:編寫(xiě)nginx負(fù)載服務(wù)配置文件
    ngx_http_upstream_module --- upstream 負(fù)載均衡
    ngx_http_proxy_module --- proxy_pass 反向代理
    [root@nginx conf.d]# vim lb.conf
    upstream lin {
    server 192.168.3.18:80;
    server 192.168.3.20:80;
    }
    server {
    listen 80;
    server_name www.lin.com;
    location / {
    proxy_pass http://lin;
    }
    }
    }
    第三個(gè)歷程:實(shí)現(xiàn)負(fù)載功能測(cè)試
    搭建集群測(cè)試環(huán)境:
    for name in {bbs,www,blog}; do echo "name 192.168.3.18">/html/name/lin.html;done
    for name in {bbs,www,blog}; do echo "name 192.168.3.20">/html/name/lin.html;done
    04.負(fù)載均衡訪(fǎng)問(wèn)網(wǎng)站異常排錯(cuò)思路:
         第一步:負(fù)載均衡 測(cè)試后端web節(jié)點(diǎn)服務(wù)器是否能夠正常訪(fǎng)問(wèn)
            [root@nginx conf.d]# curl -H host:www.lin.com 192.168.3.18/lin.html
      www 192.168.3.18
    [root@nginx conf.d]# curl -H host:www.lin.com 192.168.3.20/lin.html
      www 192.168.3.20
         第二步: 負(fù)載均衡 利用curl命令訪(fǎng)問(wèn)負(fù)載均衡服務(wù)器
    查看兩個(gè)配置文件
     第三步: 打開(kāi)一個(gè)XSHELL連接, ping www.lin.com
    第四步:配置文件編寫(xiě)不正確
    05.負(fù)載均衡配置模塊詳細(xì)說(shuō)明
    a.nginx_http_upstream_module --- upstream
    實(shí)現(xiàn)不同調(diào)度功能
    1.輪詢(xún)分配請(qǐng)求(平均)
    2.權(quán)重分配請(qǐng)求(能力越強(qiáng)責(zé)任越重)
    upstream lin {
    server 192.168.3.18:80 weight=3;
    server 192.168.3.20:80 weight=2;
    server 192.168.3.21:80 weight=1;
    }
    3.實(shí)現(xiàn)熱備功能(備胎功能)
    upstream lin {
    server 192.168.3.18:80 weight=2;
    server 192.168.3.20:80 weight=1 max_fail=5 fail_timeout=10s;
    server 192.168.3.21:80 backup;
    4.定義最大失敗次數(shù)
    max_fails=5
    5.定義失敗之后重發(fā)的間隔時(shí)間
    fail_timeout=10s 會(huì)給失敗的服務(wù)器一次機(jī)會(huì)阎肝,再等10S后再一次機(jī)會(huì)
    實(shí)現(xiàn)不同調(diào)度算法 (放在upstream模塊中)
    1.rr   輪詢(xún)調(diào)度算法
           2.wrr   權(quán)重調(diào)度算法
    3.ip_hash 算法 ---根據(jù)ip來(lái)分配挤渔,(出現(xiàn)反復(fù)登錄的時(shí)候用)這樣可以避免在登錄驗(yàn)證時(shí)出問(wèn)題,因?yàn)轵?yàn)證在后端的18服務(wù)器時(shí)成功风题,可再發(fā)請(qǐng)求有可能是在20服務(wù)器判导,這樣又要重新驗(yàn)證嫉父,除非用了緩存服務(wù)器
    4.least_conn 根據(jù)服務(wù)器連接數(shù)分配資源
    b.ngx_http_proxy_module --- proxy_pass
    *****01.訪(fǎng)問(wèn)不同的網(wǎng)站地址,不能顯示不同的網(wǎng)站頁(yè)面(bbs,blog,www)
    server {
    listen 80;
    server_name www.lin.com;
    location / {
    proxy_pass http://lin;
    proxy_set_header Host Host;  加上這個(gè) proxy_set_header X-Forwarded-Forremote_addr;
    proxy_next_upstream error timeout http_404 http_403 http_502;
    }
    }
    server {
    listen 80;
    server_name bbs.lin.com;
    location / {
    proxy_pass http://lin;
    proxy_set_header Host Host; proxy_set_header X-Forwarded-Forremote_addr;
    proxy_next_upstream error timeout http_404 http_403 http_502;
    }
    }
    server {
    listen 80;
    server_name blog.lin.com;
    location / {
    proxy_pass http://lin;
    proxy_set_header Host Host; proxy_set_header X-Forwarded-Forremote_addr;
    proxy_next_upstream error timeout http_404 http_403 http_502;
    }
    *****02.訪(fǎng)問(wèn)網(wǎng)站用戶(hù)地址信息無(wú)法進(jìn)行分析統(tǒng)計(jì)  
       proxy_set_header X-Forwarded-For remote_addr; 獲取真實(shí)IP 03.訪(fǎng)問(wèn)負(fù)載均衡會(huì)出現(xiàn)錯(cuò)誤頁(yè)面眼刃,影響用戶(hù)體驗(yàn)(用下面的模塊跳過(guò)有問(wèn)題的)  Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...; Default: proxy_next_upstream error timeout; Context: http, server, location proxy_next_upstream error timeout http_404 http_403 http_502; 06.負(fù)載均衡企業(yè)實(shí)踐應(yīng)用 1)根據(jù)用戶(hù)訪(fǎng)問(wèn)的URI信息進(jìn)行負(fù)載均衡        第一個(gè)歷程:架構(gòu)環(huán)境規(guī)劃 /upload 集群-192.168.3.18:80 /html/www/upload /static 集群-192.168.3.18:80 /html/www/static / 集群-192.168.3.20:80 /html/www 在三個(gè)web服務(wù)上進(jìn)行環(huán)境部署 web01: mkdir /html/www/upload echo "upload_web集群_192.168.3.18"> /html/www/upload/lin.html web02: mkdir /html/www/static echo "static_web集群_192.168.3.20"> /html/www/static/lin.html web03: mkdir /html/www/ echo "default_web集群_192.168.3.12"> /html/www/lin.html 第二個(gè)歷程:編寫(xiě)負(fù)載均衡配置文件: [root@nginx conf.d]# vim lb.conf upstream upload { server 192.168.3.18:80; } upstream static { server 192.168.3.20:80; } upstream default { server 192.168.3.12:80; } server { listen 80; server_name www.lin.com; location / { proxy_pass http://default; proxy_set_header HostHost;
    proxy_set_header X-Forwarded-For remote_addr; proxy_next_upstream error timeout http_404 http_403 http_502; } location /upload { proxy_pass http://upload; proxy_set_header HostHost;
    proxy_set_header X-Forwarded-For remote_addr; proxy_next_upstream error timeout http_404 http_403 http_502; } location /static { proxy_pass http://static; proxy_set_header HostHost;
    proxy_set_header X-Forwarded-For remote_addr; proxy_next_upstream error timeout http_404 http_403 http_502; } } 總結(jié):實(shí)現(xiàn)網(wǎng)站集群動(dòng)靜分離 01.提高網(wǎng)站服務(wù)安全性        02.管理操作工作簡(jiǎn)化 03.可以劃分不同人員管理不同集群服務(wù)器 2)根據(jù)用戶(hù)訪(fǎng)問(wèn)的終端信息顯示不同頁(yè)面 第一個(gè)歷程:準(zhǔn)備架構(gòu)環(huán)境   iphone www.lin.com ---iphone_access 192.168.3.18:80 谷歌 www.lin.com ---google_access 192.168.3.20:80 IE 360 www.lin.com ---default_access 192.168.3.12:80 echo "iphone_access 192.168.3.18" >/html/www/lin.html echo "google_access 192.168.3.20" >/html/www/lin.html echo "default_access 192.168.3.12" >/html/www/lin.html 第二個(gè)歷程:編寫(xiě)負(fù)載均衡配置文件 [root@nginx conf.d]# vim lb.conf upstream mobile { server 192.168.3.18:80; } upstream web { server 192.168.3.20:80; } upstream default { server 192.168.3.12:80; } server { listen 80; server_name www.lin.com; location / { if (http_user_agent ~* iphone) {
    proxy_pass http://mobile;
    }
    if (http_user_agent ~* Chrome) { proxy_pass http://web; } proxy_pass http://default; proxy_set_header HostHost;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_next_upstream error timeout http_404 http_403 http_502;
    }
    }
    4.高可用服務(wù)keepalive
    01.用途: 避免負(fù)載均衡服務(wù)出現(xiàn)單點(diǎn)問(wèn)題
    02.原理: keepalived高可用之間是通過(guò)VRRP通信的绕辖,先說(shuō)下VRRP
    VRRP: a.全稱(chēng)Virtual Router Redundancy Protocol 虛擬路由冗余協(xié)議 VRRP的出現(xiàn)是為了解決 靜態(tài)路由的單點(diǎn)故障
    b.VRRP是通過(guò)一種競(jìng)選協(xié)議機(jī)制來(lái)將路由任務(wù)交給某臺(tái)VRRP路由器
    c.VRRP用IP多播的方式(默認(rèn)多播地址224.0.0.18)實(shí)現(xiàn)高可用之間通信
    d.工作時(shí)主節(jié)點(diǎn)發(fā)包,備節(jié)點(diǎn)接包擂红,當(dāng)備節(jié)點(diǎn)接收不到主節(jié)點(diǎn)發(fā)的數(shù)據(jù)包時(shí)仪际,就啟動(dòng)
     接管程序接管主節(jié)點(diǎn)的資源。PS:備節(jié)點(diǎn)可以多個(gè)昵骤,通過(guò)優(yōu)先級(jí)競(jìng)選树碱,一般keepalive在運(yùn)維中是一對(duì)
    e.VRRP使用了加密協(xié)議加密數(shù)據(jù),但keepalive廴還是推薦使用明文方式
    keepalive工作原理:keepalived高可用之間是通過(guò)VRRP進(jìn)行通信的变秦,VRRP是通過(guò)競(jìng)選機(jī)制來(lái)
    確定主備的成榜,主的優(yōu)先級(jí)高于備,因此伴栓,工作時(shí)主會(huì)優(yōu)先獲得所有資源伦连,備節(jié)點(diǎn)處于等待狀態(tài),
    當(dāng)主掛了的時(shí)候钳垮,備節(jié)點(diǎn)就會(huì)接管主節(jié)點(diǎn)的資源惑淳,然后頂替主節(jié)點(diǎn)對(duì)外提供服務(wù)。
    在keepalive服務(wù)之間饺窿,作為主的服務(wù)器一直發(fā)送VRRP組播包歧焦,告訴備它還活著,當(dāng)主不可用
    肚医,即備監(jiān)聽(tīng)不到主發(fā)送的組播包時(shí)绢馍,就會(huì)啟動(dòng)相關(guān)服務(wù)接管資源,保證業(yè)務(wù)的連續(xù)性肠套,接管速度最快可以小于1秒
    03.實(shí)現(xiàn)部署高可用服務(wù) 
      利用keepalived軟件實(shí)現(xiàn)(高可用服務(wù)軟件好多舰涌,這只是其中一種)
      作用: 1.為lVS服務(wù)誕生出來(lái)的你稚。2.實(shí)現(xiàn)高可用服務(wù)功能
    04.高可用keepalived服務(wù)部署流程
    第一個(gè)歷程:準(zhǔn)備高可用服務(wù)架構(gòu)
    第二個(gè)歷程:安裝部署keepalived軟件  yum install -y keepalived高可用之間是通過(guò)VRRP進(jìn)行通信的瓷耙,VRRP是通過(guò)競(jìng)選機(jī)制來(lái)
    第三個(gè)歷程:編寫(xiě)keepalived配置文件
    vim /etc/keepalived/keepalived.conf
    GLOBAL CONFIGURATION ---全局配置部分
    VRRPD CONFIGURATION ---VRRP協(xié)議配置部分
    LVS CONFIGURATION ---LVS服務(wù)管理配置部分(這部分可刪除,LVS時(shí)才有用)
    [root@nginx ~]# vim /etc/keepalived/keepalived.conf
    global_defs { ---全局配置部分
    notification_email { ---設(shè)置發(fā)送郵件信息
    failover@firewall.loc
    sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc〉罄怠--設(shè)置連接的郵件服務(wù)器信息
    smtp_server 192.168.200.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL --- 高可用集群主機(jī)身份標(biāo)識(shí)(集群中班機(jī)身份標(biāo)識(shí)不能重復(fù))
    vrrp_skip_check_adv_addr
    vrrp_strict
    vrrp_garp_interval 0
    vrrp_gna_interval 0
    }vrrp_instance lin { ---Vrrp相關(guān)配置(vrrp實(shí)例配置--一個(gè)服務(wù)可以啟動(dòng)多個(gè)主進(jìn)程) vrrp協(xié)議家族搁痛,lin
    state MASTER ---標(biāo)識(shí)所在家族中身份(master/backsup)
    interface eth0 ---指定虛擬IP地址出現(xiàn)在什么網(wǎng)卡上
    virtual_router_id 51 ---標(biāo)識(shí)家族身份信息 多臺(tái)高可用服務(wù)器配置要一致
    priority 100 ---設(shè)定優(yōu)先級(jí) 優(yōu)先級(jí)越高,就越有可能成為主
    advert_int 1 ---定義組播包發(fā)送的間隔時(shí)間(秒),主與備配置一樣
    authentication { ---實(shí)現(xiàn)通訊需要有認(rèn)證過(guò)程
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress { ---配置虛擬IP地址信息
    192.168.200.16
    192.168.200.17
    192.168.200.18
    }
    }
    02. lb01配置信息:
    global_defs {
    router_id lb01
    }
    vrrp_instance lin {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
    }
    virtual_ipaddress {
    192.168.3.88
    }
    }
    03.lb02配置信息
    global_defs {
    router_id lb02
    }

             vrrp_instance lib {
                 state BACKUP
                 interface eth0
                 virtual_router_id 51
                 priority 100
                 advert_int 1
                 authentication {
                     auth_type PASS
                     auth_pass 1111
                 }
                 virtual_ipaddress {
                     192.168.3.88
                 }
             }
    

    第四個(gè)歷程:?jiǎn)?dòng)keepalived服務(wù)
       systemctl start keepalived
    systemctl enable keepalived
    global中的vrrp_strict一定要關(guān)掉宇弛,不然ping不了vip
    05.高可用服務(wù)企業(yè)應(yīng)用
       〖Φ洹1.高可用服務(wù)常見(jiàn)異常問(wèn)題---腦裂問(wèn)題
        2.出現(xiàn)原因:高可用備服務(wù)器接收不到主服務(wù)器發(fā)送的組播包枪芒,備服務(wù)器上自動(dòng)生成vip地址
    物理原因:高可用集群之間通訊線(xiàn)路出現(xiàn)問(wèn)題彻况,網(wǎng)絡(luò)波動(dòng)谁尸,線(xiàn)路出問(wèn)題等
    邏輯原因:有安全策略阻止
    3.解決方法:
    01.進(jìn)行監(jiān)控,發(fā)出告警
    備服務(wù)器出現(xiàn)VIP的原因:
             a.主服務(wù)器出現(xiàn)故障 
             b.出現(xiàn)腦裂問(wèn)題 
    c.不管以上兩種什么情況都要報(bào)警疗垛,在備服務(wù)器上編寫(xiě)監(jiān)控腳本
    [root@nginx scripts]# vim keepalived_alert.sh
    #!/bin/bash
    ip a s eth0|grep "192.168.3.88" >/dev/null
    if [ ? -ne 0 ] then echo "keepalived服務(wù)出現(xiàn)異常症汹,請(qǐng)進(jìn)行檢查"|mail -s 異常告警-keepalived 271119314@qq.com fi 02.直接關(guān)閉一臺(tái)服務(wù)器的keepalived服務(wù)    4.如何實(shí)現(xiàn)keepalived服務(wù)自動(dòng)釋放VIP資源(比如nginx停了,這時(shí)LB沒(méi)了贷腕,就要轉(zhuǎn)VIP給備了) nginx+keepalived:nginx服務(wù)停止背镇,keepalived也必須停止 第一個(gè)歷程:編寫(xiě)監(jiān)控nginx服務(wù)的腳本(腳本名最好不要加nginx,當(dāng)用PS命令來(lái)弄腳本時(shí),其實(shí)最好用netstat的命令來(lái)寫(xiě)) a. vim check_web.sh #!/bin/bash num=`ps -ef|grep -c nginx` if [num -lt 3 ]
    then
    systemctl stop keepalived
    fi
    b.vim check_web.sh 推薦這種
    #!/bin/bash
    netstat -tlnup|grep ":80" >/dev/null
    if [ $? -ne 0 ]
    then
    systemctl stop keepalived
    fi

         第二個(gè)歷程:測(cè)試編寫(xiě)腳本
    

第三個(gè)歷程:實(shí)時(shí)監(jiān)控nginx服務(wù)狀態(tài)---keepalived配置文件
01.設(shè)置腳本(放在globle 和Vrrp_instance之間)
vrrp_script check_web{
script "/server/scripts/check_web.sh"
interval 2
weight 2
}
02.調(diào)用腳本(放在vrrp_instance里面)
track_script {
check_web
}
5.高可用集群雙主配置
第一個(gè)歷程:編寫(xiě)lb01的配置文件泽裳,就是多寫(xiě)一個(gè)實(shí)例
global_defs {
router_id lb01
}
vrrp_instance lin {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.3.88/24
}
}
vrrp_instance wen {
state MASTER
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.3.89/24
}
}
第二個(gè)歷程:編寫(xiě)lb02的配置文件(與lb01相反)
第三個(gè)歷程:編寫(xiě)域名和IP地址解析信息
6.高可用服務(wù)安全訪(fǎng)問(wèn)配置(負(fù)載均衡服務(wù))
  第一個(gè)歷程:修改nginx負(fù)載均衡文件 vim /etc/ngixn/conf.d/lb.conf
server {
listen 192.168.3.88:80;
server_name www.lin.com;
location / {
proxy_pass http://web;
proxy_set_header Host Host; proxy_set_header X-Forwarded-Forremote_addr;
proxy_next_upstream error timeout http_404 http_403 http_502;
}
}
server {
listen 192.168.3.89:80;
server_name bbs.lin.com;
location / {
proxy_pass http://web;
proxy_set_header Host Host; proxy_set_header X-Forwarded-Forremote_addr;
proxy_next_upstream error timeout http_404 http_403 http_502;
}
}
第二個(gè)歷程:修改內(nèi)核文件(主要是雙主的keepalive的配置)
異常問(wèn)題:如何監(jiān)控網(wǎng)卡上沒(méi)有的IP地址瞒斩,就是雙VIP,監(jiān)聽(tīng)不在本地的IP地址
解決方法:1.echo 'net.ipv4.ip_nonlocal_bind=1' >>/etc/sysctl.conf
2.sysctl -p 加載這個(gè)文件
3.[root@nginx conf.d]# sysctl -p
net.ipv4.ip_nonlocal_bind = 1
第三個(gè)歷程:重啟nginx負(fù)載均衡服務(wù)
systemctl restart nginx

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涮总,一起剝皮案震驚了整個(gè)濱河市胸囱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瀑梗,老刑警劉巖烹笔,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抛丽,居然都是意外死亡铐然,警方通過(guò)查閱死者的電腦和手機(jī)巍扛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)嚣鄙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)磷箕,“玉大人,你說(shuō)我怎么就攤上這事蒿柳∪奶祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵垒探,是天一觀(guān)的道長(zhǎng)妓蛮。 經(jīng)常有香客問(wèn)我,道長(zhǎng)圾叼,這世上最難降的妖魔是什么仔引? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮褐奥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翘簇。我一直安慰自己撬码,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布版保。 她就那樣靜靜地躺著呜笑,像睡著了一般夫否。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叫胁,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天凰慈,我揣著相機(jī)與錄音,去河邊找鬼驼鹅。 笑死微谓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的输钩。 我是一名探鬼主播豺型,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼买乃!你這毒婦竟也來(lái)了姻氨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤剪验,失蹤者是張志新(化名)和其女友劉穎肴焊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體功戚,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娶眷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疫铜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茂浮。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖壳咕,靈堂內(nèi)的尸體忽然破棺而出席揽,到底是詐尸還是另有隱情,我是刑警寧澤谓厘,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布幌羞,位于F島的核電站,受9級(jí)特大地震影響竟稳,放射性物質(zhì)發(fā)生泄漏属桦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一他爸、第九天 我趴在偏房一處隱蔽的房頂上張望聂宾。 院中可真熱鬧,春花似錦诊笤、人聲如沸系谐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)纪他。三九已至鄙煤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茶袒,已是汗流浹背梯刚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留薪寓,地道東北人亡资。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像预愤,于是被迫代替她去往敵國(guó)和親沟于。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354