第一章
1.1奴曙、HTTP功能模塊
Nginx模塊化:耦合度更低,易于管理邓厕。工作中做事學(xué)會(huì)低耦合
SQA架構(gòu)逝嚎。RPC服務(wù)都屬于低耦合的技術(shù)模式。
1.2详恼、Nginx的目錄結(jié)構(gòu)說(shuō)明
1.3补君、Nginx主配置文件nginx.conf
1.4、Nginx其他配置文件
Nginx配合PHP動(dòng)態(tài)服務(wù)相關(guān)配置文件為:fastcgi.conf昧互、fastcgi_params挽铁。
Nginx配合Python動(dòng)態(tài)服務(wù)相關(guān)配置文件為:uwsgi_params。
第二章敞掘、虛擬主機(jī)配置實(shí)踐
2.1叽掘、虛擬主機(jī)類(lèi)型
常見(jiàn)的虛擬主機(jī)類(lèi)型:
基于域名的虛擬主機(jī);通過(guò)不同的域名區(qū)分不同的虛擬主機(jī)玖雁,企業(yè)應(yīng)用最廣更扁,對(duì)外提供服務(wù)的網(wǎng)站都是使用基于域名的虛擬主機(jī),
例如www.etianxtian.org
基于端口的虛擬主機(jī):通過(guò)不同的端口來(lái)區(qū)分不同的虛擬主機(jī)赫冬,此類(lèi)虛擬主機(jī)對(duì)應(yīng)企業(yè)內(nèi)部的網(wǎng)站,
例如www.etiantian.org:9000
基于IP的虛擬主機(jī):通過(guò)不同的 IP區(qū)分不同的虛擬主機(jī)浓镜,企業(yè)應(yīng)用少,一般不同業(yè)務(wù)需要使用多IP的場(chǎng)景都會(huì)在負(fù)載均衡器上進(jìn)行Vip綁定劲厌,而不是在web上通過(guò)綁定IP區(qū)分不同的虛擬主機(jī)
2.2膛薛、實(shí)踐基于域名的虛擬主機(jī)
cd /application/nginx/conf/
egrep -v "^$|#" nginx.conf.default >nginx.conf
vim nginx.conf(修改域名和站點(diǎn)目錄)
mkdir ../html/www
echo "www.etiantian.org" >../html/www/index.html
cat ../html/www/index.html
echo "10.0.0.8 www.etiantian.org" >>/etc/hosts
tail -1 /etc/hosts
echo 'export PATH="/application/nginx/sbin/:$PATH"'>>/etc/profile
tail -1 /etc/profile
. /etc/profile
nginx -t
nginx -s reload
curl www.etiantian.org
vim nginx.conf
mkdir ../html/{bbs,blog}
echo "bbs.etiantian.org" >../html/bbs/index.html
echo "blog.etiantian.org" >../html/blog/index.html
cat ../html/blog/index.html
cat ../html/bbs/index.html
nginx -t
nginx -s reload
vim /etc/hosts
curl bbs.etiantian.org
curl blog.etiantian.org
2.2、基于端口的虛擬主機(jī)
vim nginx.conf(修改后兩個(gè)端口為81和82)
netstat -lntup |grep nginx
nginx -t
nginx -s reload
netstat -lntup |grep nginx
curl bbs.etiantian.org:81
curl bbs.etiantian.org:82
curl bbs.etiantian.org
curl bbs.etiantian.org:82
虛擬主機(jī)通信原理
2.3补鼻、基于IP的虛擬主機(jī)
ip addr add 10.0.0.9 dev eth0 label eth0:9
ip addr add 10.0.0.10 dev eth0 label eth0:10
ifconfig
vim nginx.conf(修改IP地址)
nginx -t
nginx -s reload
netstat -lntup |grep nginx
curl 10.0.0.7
curl 10.0.0.9
curl 10.0.0.10
2.4哄啄、配置虛擬主機(jī)的步驟
1)增加一個(gè)完整的server標(biāo)簽段到結(jié)尾處。放入http標(biāo)簽辽幌。
2)更改server_name及對(duì)應(yīng)的root根目錄增淹,如果需要其他參數(shù),可以增加或修改乌企。
3)創(chuàng)建server_name域名及對(duì)應(yīng)網(wǎng)頁(yè)的根目錄虑润,并且建立測(cè)試文件,如果沒(méi)有index首頁(yè)加酵,訪問(wèn)會(huì)出現(xiàn)403錯(cuò)誤拳喻。
4)檢查nginx配置文件語(yǔ)法哭当,平滑重啟nginx服務(wù),快速檢查啟動(dòng)結(jié)果冗澈。
5)在客戶端對(duì)server_name處配置的域名做hosts解析或DNS配置钦勘,并檢查(ping域名看返回的IP是否正確)。
6)在Win32瀏覽器中輸入地址訪問(wèn)亚亲,或者在Linux客戶端做hosts解析,用wget或curl接地址訪問(wèn)彻采。
第三章、惡意域名解析
3.1捌归、什么是惡意域名解析
一般情況下肛响,要使域名能訪問(wèn)到網(wǎng)站需要兩步,
第一步惜索,將域名解析到網(wǎng)站所在的主機(jī)特笋,
第二步,在web服務(wù)器中將域名與相應(yīng)的網(wǎng)站綁定巾兆。但是猎物,如果通過(guò)主機(jī)IP能直接訪問(wèn)某網(wǎng)站,那么把域名解析到這個(gè)IP也將能訪問(wèn)到該網(wǎng)站角塑,而無(wú)需在主機(jī)上綁定蔫磨,也就是說(shuō)任何人將任何域名解析到這個(gè)IP就能訪問(wèn)到這個(gè)網(wǎng)站。
3.2吉拳、惡意域名解析的危害
可能您并不介意通過(guò)別人的域名訪問(wèn)到您的網(wǎng)站质帅,但是如果這個(gè)域名是未備案域名呢?
假如那域名是不友善的域名留攒,比如曾經(jīng)指向非法網(wǎng)站,容易引發(fā)搜索引擎懲罰嫉嘀,連帶IP受到牽連炼邀。即使域名沒(méi)什么問(wèn)題,但流量也會(huì)被劫持到別的域名剪侮,從而遭到廣告聯(lián)盟的封殺拭宁。
3.3、如何防止惡意域名解析瓣俯,配置里第一個(gè)標(biāo)簽如下配置
server{
listen 80;
server_name _default;
return 500;
}
第四章杰标、優(yōu)化nginx配置文件
mkdir extra
sed -n '11,18p' nginx.conf
sed -n '11,18p' nginx.conf >extra/01_www.conf
sed -n '19,26p' nginx.conf
sed -n '19,26p' nginx.conf >extra/02_bbs.conf
sed -n '27,34p' nginx.conf
sed -n '27,34p' nginx.conf >extra/03_blog.conf
sed -n '11,34p' nginx.conf
sed -i '11,34d' nginx.conf
sed -i '11 i include extra/01_www.conf;\ninclude extra/02_bbs.conf;\ninclude extra/03_blog.conf;' nginx.conf
cat nginx.conf
nginx -s stop
nginx
netstat -lntup |grep nginx
nginx -s reload
curl www.etiantian.org
curl bbs.etiantian.org
curl blog.etiantian.org
第五章、Nginx虛擬主機(jī)的別名配置
vim 01_www.conf
nginx -t
nginx -s reload
cat /etc/hosts
curl etiantian.org
第六章彩匕、Nginx狀態(tài)信息功能實(shí)踐
6.1、信息功能介紹
Nginx軟件的功能模塊中有一個(gè)ngx_http_stub_status_module模塊,
這個(gè)模塊的主要功能是記錄Nginx的基本訪問(wèn)狀態(tài)信息扩然,讓使用者了解Nginx的工作狀態(tài),例如:連接數(shù)等信息
要想使用狀態(tài)模塊袜漩,在編譯Nginx時(shí)必須增加http_stub_status_module支持。
6.2湾碎、配置Nginx status
nginx -V
vim extra/04_status.conf
sed -i '14 i include extra/04_status.conf;' nginx.conf
cat -n nginx.conf
nginx -t
nginx -s reload
第七章宙攻、Nginx配置日志
7.1、為Nginx診治國(guó)家錯(cuò)誤日志(error_log)配置
7.2介褥、Nginx訪問(wèn)日志
7.21座掘、Nginx訪問(wèn)日志介紹
Nginx軟件會(huì)把每個(gè)用戶訪問(wèn)網(wǎng)站的日志信息記錄到指定的文件里,供網(wǎng)站提供者分析用戶的瀏覽行為柔滔,此功能由ngx_http_log_module模塊負(fù)責(zé)
7.22雹顺、Nginx訪問(wèn)日志參數(shù)
Nginx日志格式中默認(rèn)的參數(shù)配置
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
Nginx記錄日志的默認(rèn)參數(shù)配置
access_log logs/access_www.log main;
nginx -s stop
nginx
curl www.etiantian.org
cat ../logs/access_www.log
7.23、訪問(wèn)日志輪詢切割
cd /application/nginx/logs
mv access_www.log access_www_$(date +%F).log
ls
vim /server/scripts/cut_nginx_log.sh
#!/bin/sh
Dateformat=`date +%Y%m%d`
Basedir="/application/nginx"
Nginxlogdir="$Basedir/logs"
Logname="access_www"
[ -d "$Nginxlogdir" ] && cd $Nginxlogdir || exit 1
[ -f "${Logname}.log" ]||exit 1
/bin/mv ${Logname}.log ${Dateformat}_${Logname}.log
$Basedir/sbin/nginx -s reload
crontab -e
#cut log by wanwan for gongzuo
00 00 * * * /bin/sh sh server/scripts/cut_nginx_log.sh &>/dev/null