nginx 提供各種各樣的服務(wù)器功能,本文記錄 nginx 最基礎(chǔ)的操作: 開啟、停止、重載配置 靜態(tài)文件服務(wù)器 反向代理
本文操作系統(tǒng)環(huán)境為 ubuntu18
安裝官方安裝指導(dǎo) 開啟、停止、重載配置sudo nginx # 開啟
sudo nginx -s stop # 快速停止
sudo nginx -s quit # 優(yōu)雅停止
sudo nginx -s reload # 重載配置
停止 nginx 運(yùn)行有兩種方式,區(qū)別在于,“快速停止”會(huì)立刻停止 nginx;而 “優(yōu)雅停止” 會(huì)等待已收到請(qǐng)求處理完畢再退出。也就是說,如果現(xiàn)在發(fā)出優(yōu)雅停止命令,nginx 不會(huì)立刻停止運(yùn)行,而是先看看,現(xiàn)在已收到的請(qǐng)求處理完沒有,如果有的話,就會(huì)等待已收到的請(qǐng)求處理完再退出,當(dāng)然這種情況下,如果有新的請(qǐng)求,是不會(huì)處理的。 重載配置是在 nginx 運(yùn)行期間改變 nginx 的“行為”,nginx 的行為定義在配置文件里,修改配置文件并保存后,這些配置不會(huì)立刻生效,必須重啟或者使用重載配置命令。
配置文件想讓 nginx 干什么事,要通過配置文件來說明,碼者當(dāng)前使用的 ubuntu18,配置文件在 /etc/nginx/nginx.conf 為了不使接下來的配置受老配置或者默認(rèn)配置的影響,碼者建議刪除這個(gè)配置文件的所有內(nèi)容,從零開始。(生產(chǎn)環(huán)境慎用) 靜態(tài)文件服務(wù)器怎么做比如我想把home/gy/static 這個(gè)目錄下的文件作為靜態(tài)文件供別人訪問,我可以這么做 events {}
http {
server {
root /home/gy/static;
}
}
如果使用遠(yuǎn)程主機(jī),應(yīng)該用 ip 地址替換 localhost,如果 404 了,檢查一下防火墻 80 端口和云服務(wù)器安全組規(guī)則
一點(diǎn)解釋對(duì)于任何功能強(qiáng)大、可定制性強(qiáng)的工具,其配置文件一般都非常復(fù)雜,完全理解配置文件是需要花費(fèi)巨大精力且沒有必要的。大多數(shù)情況下,我們只需要根據(jù)我們自己的需求去了解部分功能的配置,所以重要的不是為什么(比如:為什么第一行必須有一個(gè) events?),而是怎么辦(比如:我需要做哪些事才能配置一個(gè)靜態(tài)文件服務(wù)器)。 第一行 events {} 定義一些事件相關(guān)的內(nèi)容,本文不涉及,所以 events 里沒有任何內(nèi)容,但是如果沒有這一行代碼的話,這個(gè)配置就不完整,是不可以被使用的,所以加了這么一行配置 第二行到最后,用來定義 “http 相關(guān)的” -> “服務(wù)器內(nèi)容”,這里只需要指定一個(gè)服務(wù)器的根目錄就行
目錄導(dǎo)航通常情況下靜態(tài)文件服務(wù)器只提供文件的獲取,但是 nginx 提供了類似 web文件瀏覽器 的功能,就是可以訪問一個(gè)目錄,結(jié)果就是得到這個(gè)目錄下有哪些文件、文件夾,如下圖 
只需要在 root 下一行添加autoindex on; 就可以了。如果當(dāng)前的 nginx 只是用來托管一個(gè)靜態(tài)網(wǎng)站或者圖片,那么這個(gè)功能是不需要的。 修改配置后記得重載配置
反向代理關(guān)于代理和反向代理的意義,建議看這個(gè)例子 為什么需要反向代理呢?當(dāng)然,有無數(shù)需要反向代理的情況。比較常見的一種情況是:多個(gè) web 應(yīng)用部署在同一個(gè)服務(wù)器上,而這些 web 應(yīng)用都需要 80 端口。這時(shí)候,我們需要用 nginx 來導(dǎo)流,把以 /a 開頭的請(qǐng)求轉(zhuǎn)發(fā)到 a 應(yīng)用里,把以 /b 開頭的請(qǐng)求轉(zhuǎn)發(fā)到 b 應(yīng)用里 events {}
http {
server {
location /a {
proxy_pass http://localhost:8081;
}
location /b {
proxy_pass http://localhost:8082;
}
}
}
這時(shí),請(qǐng)求 http://localhost/a/resource 就會(huì)轉(zhuǎn)發(fā)到
|