筆記基于ubuntu16.04 Desktop-LTS
簡介:
- 優(yōu)點:
- 高并發(fā):在一個
BSD-like
協(xié)議下發(fā)行,基于epoll
/kqueue
模型開發(fā),支持高并發(fā)量- 內(nèi)存消耗低: 于處理靜態(tài)文件,相較于其他web(比如:
apache
),占用更少的內(nèi)存及資源- 簡單穩(wěn)定: 配置簡單(一個conf文件),運行簡單(nginx命令),而且運行穩(wěn)定
- 模塊化程度高: 功能模塊插件化設(shè)計,可以自由配置相應(yīng)的功能
- 支持
Rwrite
重寫規(guī)則: 能夠根據(jù)域名,URL等請求關(guān)鍵點,實現(xiàn)定制化的高質(zhì)量分發(fā)- 低成本:
Nginx
的負載均衡功能很強大而且免費開源,相較于幾十萬的硬件負載均衡器成本相當?shù)汀?/li>- 支持多系統(tǒng):
Nginx
代碼完全用C語言從頭寫成,可以在各系統(tǒng)上編譯并使用
- 缺點:
- 動態(tài)處理差: nginx善于處理靜態(tài)文件,但是處理動態(tài)頁面相較于Apache之類重量級的web軟件能力稍欠缺
- rewrite弱: 雖然nginx支持rewrite功能多,但是相較于Apache之類重量級的web軟件能力稍欠缺
配置Nginx:
1. 安裝
# 安裝依賴
sudo apt-get install -y build-essential libssl-dev libtool libpcre3 libpcre3-dev make openssl zlib1g-dev
# 安裝Nginx
sudo apt-get install nginx -y
2. 檢查
# 查看系統(tǒng)進程
sudo netstat -tnulp | grep nginx
# 瀏覽器輸入
127.0.0.1
3. 服務(wù)相關(guān)命令
systemctl start|stop|reload|... nginx
/etc/init.d/nginx start|stop|restart|... # 盡量使用這個命令來開啟關(guān)閉,里面指明了一些配置信息
/usr/sbin/nginx ... #不推薦使用系統(tǒng)命令
4. Nginx相關(guān)命令
nginx -v 查看版本信息
nginx -s stop 停止 #不推薦用系統(tǒng)命令,這里執(zhí)行的是 /usr/sbin/nginx
nginx -s reload 重啟 #不推薦用系統(tǒng)命令,這里執(zhí)行的是 /usr/sbin/nginx
nginx -t 檢查默認配置文件
nginx -t -c file.conf 指定配置文件進行檢查
5. 卸載
# 查看Nginx相關(guān)的軟件
dpkg --get-selections|grep nginx
dpkg --list | grep nginx
# 進行卸載
apt-get --purge remove nginx
apt-get --purge remove nginx-common
apt-get --purge remove nginx-core
Nginx 配置路徑:
1. Nginx軟件目錄:
工作目錄: /etc/nginx
執(zhí)行文件: /usr/sbin/nginx # 這屬于系統(tǒng)命令的執(zhí)行路徑,不推薦使用此文件執(zhí)行
日志目錄: /var/log/nginx
啟動文件: /etc/init.d/nginx # 盡量使用這個命令來開啟關(guān)閉
web目錄: /var/www/html/ # 存放靜態(tài)文件 首頁文件是index.nginx-debian.html
/usr/share/nginx/html/ #首頁文件是index.html
2. Nginx配置文件
- 默認全局配置文件: 包含全局配置段,和http配置段,其中在http配置段中
include /etc/nginx/conf.d/*.conf;
表示我們自定義的子配置文件的路徑,會首先進行處理, 在這個下面還有include /etc/nginx/sites-enabled/*;
表示如果我們自定義的配置無法滿足請求,會在這個路徑里的配置文件繼續(xù)處理
# 路徑
/etc/nginx/nginx.conf
- 其他配置文件路徑: 文件內(nèi)包含
server
配置,其中每個server
代表一個站點, 站點可以有不同的ip和端口,而每個server
中的location
可以代表一個請求路徑
# 路徑
/etc/nginx/{sites-available/sites-enabled/conf.d} # 其中conf.d中放的是我們自定義的配置
一個請求生命周期:
Request(127.0.0.1:80/hello),經(jīng)過全局配置文件,進入包含
server
配置的子配置文件內(nèi),Nginx根據(jù)Request的路徑和端口來使用不同的server
配置,進入到server
配置后,根據(jù)location
后的跟的請求路徑進行匹配. 如果沒匹配到請求路徑,則會給客戶端報404,如果匹配到location
后的請求路徑,進入到設(shè)置的root
資源文文件夾中,根據(jù)$uri
(hello) 資源文件夾中尋找$uri
的文件,如果未找到則會把$uri
當成$uri/
路徑來尋找$uri/
下的index文件,如果沒找到index文件或者$uri/
也沒有,則會給客戶端404