什么是nginx栅迄?
nginx是一個(gè)高性能的http和反向代理web服務(wù)器, 像我們前端包部署的話一般就用nginx進(jìn)行反向代理(反向代理:我們發(fā)送請(qǐng)求到反向代理的服務(wù)器毅舆,然后由反向代理服務(wù)器去目標(biāo)服務(wù)器請(qǐng)求資源再返回給客戶端愈腾,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器的地址悦即,隱藏了真實(shí)服務(wù)器的IP地址)
nginx的優(yōu)點(diǎn)
占有內(nèi)存少橱乱,并發(fā)能力強(qiáng),穩(wěn)定性高作瞄,反向代理危纫,負(fù)載均衡,當(dāng)網(wǎng)站的訪問量達(dá)到一定程度后属韧,單臺(tái)服務(wù)器不能滿足用戶的請(qǐng)求時(shí)蛤吓,需要多臺(tái)服務(wù)器集群可以使用nginx做反向代理糠赦。多臺(tái)服務(wù)器可以平均分擔(dān)負(fù)載,不會(huì)因?yàn)槟撑_(tái)服務(wù)器負(fù)載高宕機(jī)而導(dǎo)致某臺(tái)服務(wù)器閑置的情況淌山。(比如淘寶顾瞻,微博)
關(guān)于nginx配置
大致模板
mian #全局配置
events { #工作模式配置
....
}
http { #http設(shè)置
.....
server { #服務(wù)器主機(jī)配置
location / {
....
},
location /模塊名稱/ {
....
}
}
}
具體模塊配置
main #全局配置
1: user 用來指定nginx worker進(jìn)程運(yùn)行用戶以及用戶組荷荤,默認(rèn)nobady賬號(hào)運(yùn)行
2: error_log 定義錯(cuò)誤日志文件的位置和報(bào)錯(cuò)日志的級(jí)別
3: woker_processes 指定nginx要開啟的子進(jìn)程數(shù)量
4: pid 用來指定進(jìn)程id的存儲(chǔ)文件的位置
event #工作模式配置
1: worker_connections 指定最大可以同時(shí)接收的鏈接數(shù)量
2: multi_accept 配置指定nginx在收到一個(gè)新連接通知后盡可能多的接受更多的連接
http #http設(shè)置(nginx的核心模塊移稳,需要根據(jù)硬件信息進(jìn)行適當(dāng)?shù)呐渲茫? 1: include mime.types 指定當(dāng)前文件中包含另一個(gè)文件的指令
2: default_type application/octet-stream 指定默認(rèn)處理的文件類型可以是二進(jìn)制
3: sendfile on; 將文件的回寫過程教給數(shù)據(jù)緩沖去完成个粱,而不是放在應(yīng)用中完成翻翩,對(duì)性能提升有好處
4: tcp_nopush on; 讓nginx在一個(gè)數(shù)據(jù)包中發(fā)送所有的頭文件,而不是一個(gè)一個(gè)單獨(dú)發(fā)
5: keepalive_timeout 65; 給客戶端分配連接超時(shí)間胶征,服務(wù)器會(huì)在這個(gè)時(shí)間過關(guān)閉連接
6: gzip on; 告訴nginx采用gzip壓縮的形式發(fā)送數(shù)據(jù)桨仿,減少發(fā)送的數(shù)據(jù)量
7: gzip_min_length膀斋;設(shè)置對(duì)數(shù)據(jù)啟用壓縮的最少字節(jié)數(shù)
server #服務(wù)器主機(jī)配置(虛擬主機(jī),反向代理)
1: server 80伴嗡; 一個(gè)虛擬主機(jī)的配置,一個(gè)http中可以配置多個(gè)server瘪校;
2: server_name 用來指定ip的地址或者域名
3: charset: 用于設(shè)置路徑中配置網(wǎng)頁的默認(rèn)編碼格式
4: access_log 指定服務(wù)器中訪問記錄日志的地址
5: error_log 指定服務(wù)器中錯(cuò)誤日志的地址
server -> location/ #前臺(tái)包路由配置
1: location/: 匹配訪問的根目錄
2: root: 前臺(tái)包的位置
3: index: 在不指定訪問的具體資源時(shí),默認(rèn)展示的資源文件里誒包
server -> location ^~ /模塊名稱/ #反向代理
1: proxy_pass: 反向代理服務(wù)器的ip地址
2: proxy_redirect off; 重定向被代理服務(wù)器的地址
3: proxy_set_header (設(shè)置請(qǐng)求頭傳遞給后端服務(wù)器)
4: proxy_read_timeout 設(shè)置等待后端應(yīng)用服務(wù)器的時(shí)間
5: proxy_send_tiomout 設(shè)置發(fā)送請(qǐng)求超時(shí)時(shí)間
關(guān)于location 路徑匹配
=開頭的是精準(zhǔn)匹配 只匹配根目錄結(jié)尾的請(qǐng)求泣懊,后面不能帶任何字符串
^~開頭表示url以某個(gè)字符串開頭馍刮,非正則匹配
~ 區(qū)分大小寫的正則匹配
~*不區(qū)分大小寫的正則匹配
/ 通用匹配窃蹋,如果沒有其他匹配,任何請(qǐng)求都會(huì)被匹配到