這篇手冊簡單介紹了nginx,並提供了一些可以操作的簡單的工作。前提是nginx已經被安裝到你的伺服器上。如果沒有安裝,請閱讀上篇:nginx 學習筆記(1) nginx安裝。這篇手冊主要內容:1. 如何啟動和停止nginx,如何載入nginx配置;
2.配置檔案的結構;3.如何安裝nginx來做靜態內容的伺服器;4,如何配置nginx作為**伺服器;5:如何連線fastcgi應用。
nginx有乙個主程序和多個工作程序。主程序的作用是讀和驗證配置檔案,啟動工作程序。工作程序正在處理請求。nginx應用事件驅動模型和os依賴機制來在工作程序之間有效的分發請求(負載均衡)。工作程序的數目定義在配置檔案中,在乙個特定的配置中一般是固定的或者可以根據可用的cpu 核心來動態修改這個數量。工作程序參考:
nginx及其模組如何工作取決於配置檔案的定義。預設情況下,配置檔案為:nginx.conf
and 目錄為/usr/local/nginx/conf
/etc/nginx
, 或者/usr/local/etc/nginx
.
啟動nginx,直接執行可執行檔案即可。一旦nginx啟動完成,可以通過可執行引數s來控制nginx的執行。
語法如下:
nginx -s signalsignal可選項
例如,停止nginx但等待工作程序處理完成當前的請求,可以使用下面的命令:
nginx -s quit注意:這個命令的執行者必須是和啟動nginx的是同乙個使用者。
直接修改配置檔案將不會立即生效,需要重啟nginx或者向nginx傳送reload配置檔案命令:
nginx -s reloadnginx程序也可以通過unix工具進行處理,例如kill命令。unix工具可以通過程序id作為引數來進行處理。預設情況下,nginx主程序的id寫入/usr/local/nginx/logs或者/var/run檔案中。例如,如果主程序的id是1628,傳送quit訊號將會使nginx完整退出,命令如下;
kill -s quit 1628
同樣,也可以功過ps命令來獲取nginx執行的所有程序列表,例如下面的方法:
ps -ax | grep nginx
配置檔案的結構
ngnix的配置包含了許多模組,每個模組使用指令來執行。指令包含簡單指令和塊指令。簡單指令通過空格來分離名稱和引數,使用分號(;)作為結尾;塊指令和簡單指令有相同的結構,但不是以分號結尾而是以大括號({})包含指令。如果乙個塊指令中大括號內含有其它指令,那麼括號內的叫做上下文(例如:事件、http、伺服器、位置)。
在配置檔案中,不在任何上下文的指令被認為存在於主上下文。事件和http指令就存在於主上下文中,server在http上下文中,位置在server上下文中。
配置檔案使用#號作為注釋符號。
為靜態檔案提供服務
乙個web伺服器的重要工作就是為靜態檔案服務。例如,你想根據請求的不同,去不同目錄去請求服務:/data/www存放html檔案,/data/images存放資訊。這就需要修改配置檔案,建立乙個伺服器塊,在這個http塊中建立伺服器塊,伺服器塊內再建立兩個不同的位置塊。
首先,建立/data/www目錄並把乙個包含任意內容的index.html檔案放入該目錄;建立/data/images目錄,放置一些。
然後,開啟配置檔案。預設配置檔案中已經包含了一些server塊的例項,大部分被注釋掉了。現在注釋掉所有的類似塊,新寫乙個server塊:
}通常,配置檔案可能會包含幾個server塊,server通常指定名稱和監控埠。當nginx決定哪個server程序處理請求時,它測試uri請求報文頭而不是定義在server塊中的位置指令的引數。
增加下面的位置塊到伺服器塊中:
location /位置包括中定義的「/」字首和請求uri進行比較。如果和uri中請求匹配,uri將增加root指令的路徑到uri中,亦即到本地檔案系統的路徑/data/www下去響應請求。如果有多個位置塊匹配,nginx選擇最長字尾的那個。以上的位置塊提供了最短的字首(長度為1),因此當只有所有別的位置塊都不能提供匹配時,這個模組才能使用到。
接下來,增加第二個位置塊:
location /images/它將匹配以/images/開頭的請求(位置「/」也匹配這些request,但它的字首更短)。
上述完整的配置如下:
server上述已經是乙個可以執行的伺服器的配置了,該伺服器監聽http標準埠80,可以通過htt://localhost/來訪問本地機器。如果請求以/images/開頭,那麼該伺服器將從目錄/data/images/下獲取檔案來應答請求。例如:請求http://localhost/images/example.png傳送後,nginx將傳送/data/images/example.png檔案應答請求。如果該檔案不存在,nginx將傳送404返回。不是以/images/開頭的請求將會被對映到/data/www目錄下。例如:對於請求http://localhost/some/example.html請求,nginx將會傳送/data/www/some/example.html檔案來應答。location /images/
}
nginx -s reload
若配置沒有生效或者沒有達到期望效果,可以通過目錄/usr/local/nginx/logs或者/var/log/nginx下的access.log和error.log來查詢原因。
建乙個簡單的**伺服器
nginx另乙個頻繁使用的特性是作為乙個簡單的**伺服器,**伺服器意思就是接受請求,並傳送這些請求到被**的伺服器,從**的伺服器得到響應資訊,然後傳送給客戶端。
下面介紹配置乙個簡單的**伺服器的例子,這個**伺服器提供從本地機器獲取請求,然後傳送到別的其它的被**伺服器。在這個例子中,所有的伺服器都定義在乙個單獨nginx例項。
首先,定義被**伺服器,這可以通過在配置檔案中增加乙個或者多個伺服器塊,具體內容如下:
server這個簡單的伺服器監聽埠8080(上個例子中沒有使用listen是因為使用http標準埠80),對映所有的請求到本地檔案系統的/data/up1目錄,建立此目錄並放置index.html檔案到該目錄。注意root指令被放置到伺服器上下文。當選擇提供服務的位置塊不包含自己的root指令時該root指令將被使用。}
接下來,使用上篇伺服器的配置並修改,使之成為乙個**伺服器的配置。在第乙個位置塊中,在第一行的引數中新增proxy_pass指令加**伺服器的協議、名稱、埠。(在我們的例子中是http://localhost:8080):
serverlocation /images/
}
location ~ \.(gif|jpg|png)$這個引數是乙個正規表示式,它匹配以.gif,.jpg或者.png結尾的url。乙個正規表示式應該以~開頭。響應的請求將被對映到/data/images目錄。
當nginx選擇乙個位置塊為請求提供服務時,它首先檢測指定帶字首的位置指令,別忘記優先選擇最長字首的,再檢測正規表示式。如果和乙個正規表示式匹配,nginx選擇這個位置塊,否則選擇最初的那個。
完整的**伺服器配置如下:
}這個伺服器將過濾以以.gif,.jpg或者.png結尾的請求,然後對映到目錄/data/images
}
nginx 學習筆記 2 nginx新手入門
這篇手冊簡單介紹了nginx,並提供了一些可以操作的簡單的工作。前提是nginx已經被安裝到你的伺服器上。如果沒有安裝,請閱讀上篇 nginx 學習筆記 1 nginx安裝。這篇手冊主要內容 1.如何啟動和停止nginx,如何載入nginx配置 2.配置檔案的結構 3.如何安裝nginx來做靜態內容...
2 Nginx學習筆記 配置檔案
核心配置檔案nginx.conf由三部分組成 基本配置 user nobody 配置worker程序執行使用者 worker processes 1 配置工作程序數目,根據硬體調整,通常等於cpu數量或者2倍於cpu數量 error log logs error.log 配置全域性錯誤日誌及型別 d...
2 Nginx安裝教程
2 需要的安裝包 第二步 解壓壓縮檔案 tar zxvf pcre 8.37.tar.gz 第三步 configure完成後,回到pcre目錄下執行make,最後執行make install 或直接執行 make make install 第四步 pcre config version 檢查版本 在...