Nginx初探
?
引言
在項(xiàng)目質(zhì)量保障過程中,尤其是在測(cè)試環(huán)境的搭建和維護(hù)時(shí),經(jīng)常要與nginx打交道,比如短鏈接、api的ACL控制等配置都與nginx相關(guān)。筆者從研究項(xiàng)目的nginx配置出發(fā),然后在本地搭建了nginx服務(wù),開展了進(jìn)一步探索,將學(xué)習(xí)的過程記錄于此,一是對(duì)自己知識(shí)的梳理,二是希望對(duì)有緣人有點(diǎn)幫助。
正文
nginx是一個(gè)web網(wǎng)站常用的高性能http和反向代理服務(wù)器,其具有較好的并發(fā)能力,被網(wǎng)易、百度、騰訊、新浪等網(wǎng)站廣泛使用。
1.首先弄清楚正向代理和反向代理
正向代理:代理客戶端,替客戶端收發(fā)請(qǐng)求,使真實(shí)的客戶端對(duì)服務(wù)器不可見。如圖所示,proxy和client同屬于一個(gè)網(wǎng)絡(luò),對(duì)server透明
?
反向代理:代理服務(wù)器,提服務(wù)器收發(fā)請(qǐng)求,使真實(shí)的服務(wù)器對(duì)客戶端不可見。如圖所示,proxy和server同屬于一個(gè)網(wǎng)絡(luò),對(duì)client透明
?
實(shí)際上proxy都是代為收發(fā)請(qǐng)求和響應(yīng),只是在結(jié)構(gòu)上左右換了下,所以一個(gè)叫正向代理,另一個(gè)叫反向代理。
2.nginx的反向代理原理
如下圖所示:nginx作為反向代理服務(wù)器接收來(lái)自客戶端的http請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)的web服務(wù)器,同時(shí)接收來(lái)自web服務(wù)器的response結(jié)果,并返回給客戶端。此時(shí)nginx代理服務(wù)器對(duì)外展現(xiàn)為一個(gè)服務(wù)器。
?
3.nginx的反向代理的作用
(1)負(fù)載均衡。nginx可以將來(lái)自客戶端的請(qǐng)求均衡的分發(fā)到web服務(wù)器集群中的不同機(jī)器上進(jìn)行處理,平衡集群中各個(gè)服務(wù)器的壓力。這對(duì)于大訪問量的web網(wǎng)站來(lái)說(shuō),是需要的。
(2)安全保障。客戶端直接訪問的不是提供內(nèi)容的web服務(wù)器,為保護(hù)網(wǎng)站服務(wù)器提供了一層屏障,有利于保護(hù)網(wǎng)站的安全。
(3)加速web請(qǐng)求。nginx可以配置緩存,存儲(chǔ)真實(shí)web服務(wù)器的某些資源和響應(yīng),減輕真實(shí)服務(wù)器的壓力,同時(shí)加速web請(qǐng)求
4.本地搭建nginx服務(wù)
工作機(jī)器是windows環(huán)境:
Step1: nginx官網(wǎng)下載nginx壓縮包。
Step2: 進(jìn)行解壓到nginx目錄
Step3:啟動(dòng)nginx,命令:
cd nginx start nginx.exe 啟動(dòng)成功標(biāo)志:在瀏覽器輸入127.0.0.1 會(huì)出現(xiàn)nginx的歡迎頁(yè)面
Step4:配置nginx的conf文件
nginx.conf里面有很多配置參數(shù),主要有:工作模式、最大連接數(shù)配置(events)和http服務(wù)器設(shè)置
(1)將baidu的html頁(yè)面保存至nginx/html的新建文件夾nginxFiles下,然后進(jìn)行如下的配置:
server{ ? ?
listen 80; ? ? ?
server_name localhost; ? ?
location / { ? ? ? ? ? ? ? ? root html/nginxFiles; ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? index baidu.html; ? ? ?
? ? ? ? ? ? }
}
以上配置代表:將域名localhost,端口80的“/”下請(qǐng)求,定位到本地root的位置,默認(rèn)的首頁(yè)是baidu.html。配置后重啟nginx,在瀏覽器中再次輸入127.0.0.1就會(huì)自動(dòng)出現(xiàn)baidu的頁(yè)面。
(2)配置負(fù)載均衡 首先在http中配置負(fù)載均衡機(jī)器列表,如下所示:每個(gè)server代表一臺(tái)機(jī)器,后面加上ip地址:端口,weight代表權(quán)重,權(quán)重越大,則nginx把客戶端請(qǐng)求轉(zhuǎn)發(fā)給他的可能性就越大。
upstream vivi{ ? ?
server 127.0.0.1:8050 ?weight=1; ? ? ? ?
server 127.0.0.1:8060 ?weight=2;
}
然后配置server中的location,如下:表示攔截域名后帶/所有請(qǐng)求,轉(zhuǎn)發(fā)至vivi中的機(jī)器進(jìn)行處理,實(shí)現(xiàn)負(fù)載均衡。proxy_pass表示請(qǐng)求轉(zhuǎn)向自定義服務(wù)器列表。項(xiàng)目中的短鏈接服務(wù),就是用proxy_pass請(qǐng)求轉(zhuǎn)向短鏈接服務(wù)器即可。
location / {
? ? proxy_pass http://vivi;
}
Step5:修改配置后,重啟nginx服務(wù)生效。常用的nginx命令
start nginx.exe ?#啟動(dòng)
nginx nginx -s stop ?#關(guān)閉
nginx nginx -s reload #重啟nginx
5.nginx支持多域名配置
可以在一個(gè)文件中配置多個(gè)server,如下:
server{ ? ? ?listen 80; ? ?
?server_name www.vivi.com; #綁定域名 ?
?index index.htm index.html index.php #默認(rèn)文件 ? ?
?root /home/www/vivi.com #網(wǎng)站根目錄 ? ? ? ? ? ?
?include location.conf #調(diào)用其他規(guī)則,也可去除 }
?
server{ ? ?
listen 81; ? ?
server_name www.test.com; #綁定域名 ?
index index.htm index.html index.php #默認(rèn)文件 ?
root ? ? ? ?/home/www/msn.web126.com #網(wǎng)站根目錄 ? ?
include location.conf #調(diào)用其他規(guī)則,也可去除
}
也可以在一個(gè)server中的server_name后面配置多個(gè)域名,如:
server{ ? ? ?
? listen 80; ?
? server_name www.vivi.vom www.test.com
}
6.nginx的域名匹配順序
(1)準(zhǔn)確的server_name匹配,如下配置:只精準(zhǔn)vivi.info 和 www.vivi.info兩個(gè)域名:
server{ ?listen 80;
? ? ? ? ?server_name vivi.info www.vivi.info; ?
? ? ? ? ?... }
(2)以通配符開始的字符串,如下配置:能匹配以vivi.info結(jié)尾的所有域名
server{ listen 80;
? ? ? ? ?server_name *.vivi.info;
? ? ? ?... }
(3)以通配符結(jié)束的字符串,如下配置:能匹配以www開頭的所有域名
server{ listen 80;
? ? ? ? server_name www.*; ...
? ? ?}
(4)匹配正則表達(dá)式,如下配置:能匹配以vivi.org結(jié)尾的所有域名
server{ listen 80;
? ? ? ? server_name vivi\.org$; ...
?
? ? ? ? }
結(jié)語(yǔ)
本文只根據(jù)項(xiàng)目的需要,研究了項(xiàng)目中常用的配置,為了提高nginx性能,還有很多高級(jí)的配置參數(shù),可以根據(jù)需要進(jìn)行深入學(xué)習(xí)
推薦學(xué)習(xí)資料:nginx官網(wǎng)文檔
轉(zhuǎn)載于:https://www.cnblogs.com/zengkefu/p/5814793.html
總結(jié)
- 上一篇: win10系统怎么改win7 如何将wi
- 下一篇: Nginx反向代理多个应用时,通过Blu