優(yōu)點(diǎn)
- 更快
- 高擴(kuò)展性
- 高可靠性
- 低內(nèi)存
- 萬級并發(fā)量
- 熱部署
基本命令
- 啟動
- 使用默認(rèn)配置文件(默認(rèn)配置文件路徑 /usr/local/etc/nginx/nginx.conf)
/usr/local/bin/nginx- 使用自定義配置文件
/usr/local/bin/nginx -c ~/my-nginx.conf - 停止
- 可以使用系統(tǒng)kill命令停止
- 立即終止(相當(dāng)于kill命令結(jié)果)
/usr/local/bin/nginx -s stop - 平緩的停止服務(wù)(關(guān)閉監(jiān)聽端口,停止接受新的請求;正常的處理完所有已經(jīng)接受到的請求,再停止服務(wù))
/usr/local/bin/nginx -s quit
- 重讀配置并生效(先檢查配置文件,如果沒有錯誤,將會平緩的停止再次啟動)
/usr/local/bin/nginx -s reload - 日志文件回滾(將當(dāng)前文件轉(zhuǎn)移到其他目錄進(jìn)行備份,重新打開日志文件)
/usr/local/bin/nginx -s reopen
運(yùn)行Nginx進(jìn)程
master 單進(jìn)程模式:系統(tǒng)中只有一個進(jìn)程,該進(jìn)程既是master角色又是worker角色
master-worker協(xié)作模式
- master進(jìn)程管理多個worker進(jìn)程,worker進(jìn)程是繁忙的,真正的進(jìn)行互聯(lián)網(wǎng)的服務(wù),mater只負(fù)責(zé)管理worker進(jìn)程
- 一般情況下,worker進(jìn)程的數(shù)量和cpu的合數(shù)相等
- worker進(jìn)程通過共享內(nèi)存,原子操作等進(jìn)程通信機(jī)制來實(shí)現(xiàn)負(fù)載均衡
-
worker可以同時處理的請求數(shù)受限于內(nèi)存大小,不同的worker進(jìn)程之間處理并發(fā)請求幾乎是沒有同步鎖限制,他們不會進(jìn)入睡眠狀態(tài)
2.jpg
配置的通用語法
- 配置項注釋 : #
- 配置單位
- 空間相關(guān)單位 K/k(表示KB) M/m(表示MB)
- 時間相關(guān)單位 ms(毫秒) s(秒) m(分鐘) h(小時) d(天) w(周) M(月,包含30天) y(年,包含365天)
配置文件分析
文件主要結(jié)構(gòu)
main
events {
}
http {
server {
location {
}
}
}
- main 只要控制Nginx子進(jìn)程所屬用戶和用戶組、派生子進(jìn)程數(shù)、錯誤日志和級別,pid位置,子進(jìn)程的優(yōu)先級,進(jìn)程對應(yīng)的CPU,進(jìn)程可以打開文件描述符數(shù)目等
- events 控制Nginx連接方式
- http 處理http請求的主要配置塊
- server 主機(jī)配置塊,可以用于配置多個虛擬主機(jī)
- location server中對應(yīng)目錄級別的控制塊
main 相關(guān)配置
- worker進(jìn)程數(shù)
worker_process num - 設(shè)置用戶和組
- master進(jìn)程以root權(quán)限運(yùn)行,worker進(jìn)程默認(rèn)情況下以nobody用戶運(yùn)行(原因在于nobody用戶是一個不能登錄的賬號,worker進(jìn)程用戶權(quán)限越低,服務(wù)器安全系數(shù)越高)
- 配置方式
user nuser ngroup
events相關(guān)配置
- 每個worker的處理并發(fā)最大連接數(shù)
worker_connections num
http相關(guān)配置
- include 用于引入配置文件
- default_type 設(shè)置默認(rèn)的文件類型
- sendfile 默認(rèn)值是on,表示開啟高效的文件傳輸模式
server相關(guān)配置
- listen 監(jiān)聽端口,默認(rèn)值是80
- error_page 自定義錯誤頁面
- 基于錯誤碼轉(zhuǎn)到本地頁面
error_page 404 /404.html; error_page 500 502 /50.html;- 基于錯誤碼轉(zhuǎn)到在線資源
error_page 403 http://test.com/forbidden.html;- 錯誤碼進(jìn)行轉(zhuǎn)換
error_page 401=200 /404.html - server_name
- 配置方式
server_name name[ name...] - 說明
- server_name后面可以配置多個名稱
- 處理HTTP請求時,nginx將取出header中host信息,與每一個name進(jìn)行匹配,其中優(yōu)先級如下
- 名稱完全匹配 如 www.test.com
- 選擇通配符在前面的 如*.test.com
- 選擇通配符在后面的 如 www.test.*
- 最后選擇正則表達(dá)式匹配的
- 當(dāng)全部無法匹配時,將會使用默認(rèn)server
- 配置方式
location相關(guān)配置
- root 這是主機(jī)站點(diǎn)的根目錄位置
- index 指定默認(rèn)的索引文件
- 配置匹配地址
- location[=||*|^~|@]/uri/{...}
- location根據(jù)用戶請求中的uri來進(jìn)行配置匹配,如果匹配采用location塊中配置處理請求
- 匹配規(guī)則
- =表示把uri作為字符串,以便與參數(shù)進(jìn)行完全匹配
- ~表示匹配URI是字母是大小寫敏感的(可以使用正則表達(dá)式)
- ~*表示匹配URI時忽略字母大小寫(可以使用正則表達(dá)式)
- ^~表示匹配URI時只需要期前半部分與uri匹配即可
- @表示僅僅用于nginx服務(wù)內(nèi)部請求之間的重定向
- 當(dāng)匹配多個值時,以一個匹配優(yōu)先
- root/alias 指定本地文件
- 兩者區(qū)別:root是在uri前面直接加路徑(root/uri);alias是匹配部分的替換
當(dāng)請求/img/1.png => /var/www/image/1.pnglocation /img/ { alias /var/www/image/; } location /img2/ { root /var/www/image/ }
當(dāng)請求/img2/1.png => /var/www/image/img2/1.png
權(quán)限控制
- 默認(rèn)提供了allow和deny兩種控制模式
- 權(quán)限指令后面加可以使用ip,ip段和all
- 注意事項
- 單個IP范圍最小,all范圍最大
- 在同一個塊中,同一個IP或IP段存在多個權(quán)限指令時,先出現(xiàn)的優(yōu)先級最高
- 當(dāng)多個塊 中,都出現(xiàn)權(quán)限控制指令,內(nèi)層的權(quán)限高于外層權(quán)限
- 可以使用的塊
- http
- server
- 禁止所有
deny all - 只允許指定用戶訪問
allow 192.168.1.1 deny all
