NGINX初學者指南

2021-10-01 19:11:10 字數 4385 閱讀 4986

2. 配置檔案的結構

3. 提供靜態內容

4. 設定簡單的**伺服器

5. 設定fastcgi**

參考文件

nginx有乙個主程序和幾個工作程序。

主流程的主要目的是讀取和評估配置,以及維護工作流程。工作程序對請求進行實際處理。nginx採用基於事件的模型和依賴於作業系統的機制,在工作程序之間有效地分配請求。工作程序的數量在配置檔案中定義,可以針對給定的配置進行調整,也可以根據可用的cpu核心數量自動調整。從句法上很容易理解worker_processes number | auto,工作程序數的最佳值取決於許多因素,包括(但不限於)cpu核心數,儲存資料的硬碟驅動器數以及載入模式。將其設定為可用的cpu核心數將是乙個不錯的開始(值 auto 將嘗試自動檢測)。

要啟動nginx,請執行可執行檔案。一旦啟動nginx,就可以通過使用-s引數呼叫可執行檔案來對其進行控制。語法如下:

nginx -s signal
其中signal可能是以下之一:

nginx -s quit
nginx -s reload
kill -s quit 1628
為了獲取所有正在執行的nginx程序的列表,可以使用ps命令,例如:

ps -ax | grep nginx
nginx由眾多模組組成,這些模組受配置檔案中的指令控制。指令分為簡單指令和塊指令。簡單指令由名稱和引數組成,這些名稱和引數用空格分隔,並以分號;結尾。塊指令與簡單指令具有相同的結構,但它以一組附加指令結尾,這些指令被大括號 包圍,而不是分號。如果塊指令可以在大括號中包含其他指令,則稱之為上下文(例如: events, http, server和 location)。

放置在配置檔案中任何上下文之外的指令都被視為位於主上下文中。events和http指令位於主上下文,server指令位於http,location在server中。

以行為單位,#符號後面的其餘部分被視為注釋。

web伺服器的一項重要任務是分發檔案(例如影象或靜態html頁面)。您將實現乙個示例,其中根據請求,將從不同的本地目錄提供檔案:/data/www (包含html檔案)和/data/images(包含影象)。這需要編輯配置檔案,在http塊中設定乙個server塊,server塊中有兩個location塊。

首先,建立/data/www目錄,並在其中放置乙個index.html,其中包含文字內容。然後建立/data/images目錄,並在其中放置一些影象。

接下來,開啟配置檔案nginx.conf。預設配置檔案已經包含server塊的幾個示例,大部分已被注釋掉。現在注釋掉所有這樣的塊並新建乙個新 server塊:

}通常,配置檔案可以包括多個server塊,這些server塊由它們偵聽的埠和伺服器名稱區分。一旦nginx決定由哪個server處理請求,它就會根據server塊中定義的location指令的引數來檢測請求頭中指定的uri。

將以下location塊新增到該server塊:

location /
與請求中的uri相比, 此location塊指定「 /」字首。對於匹配的請求,會將uri新增到root 指令中指定的路徑 ,即新增到/data/www,以形成本地檔案系統上所請求檔案的路徑。如果有多個匹配的location塊,nginx將選擇字首最長的塊。location上面的塊提供了最短的字首,長度為1,因此,只有在所有其他location塊均未提供匹配項時,才會使用該塊。

接下來,新增第二個location塊:

location /images/
這將匹配以 /images/ 開頭的請求(location / 也匹配此類請求,但字首較短)。

server塊的最終配置應如下所示:

server 

location /images/

}

這已經是伺服器的工作配置,可以在標準埠80上偵聽,並且可以在本地計算機上訪問 http://localhost/。對於以/images/開頭的uri請求,伺服器將從/data/images目錄傳送檔案。例如,為了響應http://localhost/images/example.png請求,nginx將傳送/data/images/example.png檔案。如果不存在這樣的檔案,將傳送乙個表示404錯誤的響應。uri不以/images/開頭的請求將對映到/data/www目錄。例如,為了響應http://localhost/some/example.html請求,nginx將傳送/data/www/some/example.html檔案。

為了應用新配置,如果nginx尚未啟動,則啟動nginx,或者傳送reload訊號到nginx主程序:

nginx -s reload
如果出現問題,您可以嘗試在/usr/local/nginx/logs或/var/log/nginx目錄下的access.log和error.log檔案中查詢原因。

ngnx的常見用途之一是將其設定為**伺服器,這意味著伺服器接收請求,將它們傳遞給**伺服器,從**伺服器獲取響應,並傳送給客戶端。

我們將配置乙個基本的**伺服器,該伺服器從本地目錄提取檔案來響應影象請求,並將所有其他請求傳送到**伺服器。在此示例中,兩個伺服器都將在1個nginx例項上定義。

首先,通過向ngix配置檔案中新增乙個server塊來定義**伺服器,其內容如下:

server 

}

這將是乙個簡單的伺服器,它監聽埠8080,並將所有請求對映到本地檔案系統上的/data/up1目錄。建立此目錄並將index.html檔案放入其中。注意,root指令放在server上下文中。當響應http請求的location塊中沒有root指令時,使用該root指令。

接下來,使用上一部分中的伺服器配置並對其進行修改以使其成為**伺服器配置。在第乙個location塊中,將 proxy_pass 指令與引數中指定的**伺服器的協議,名稱和埠(在本例中為http://localhost:8080)放置在一起:

server 

location /images/

}

我們將修改第二個location塊,該塊當前將帶有/images/字首的請求對映到/data/images目錄下的檔案,以使其與具有典型副檔名的影象的請求相匹配。修改後的location塊如下所示:

location ~ \.(gif|jpg|png)$
該引數是乙個正規表示式,匹配以.gif、.jpg或.png結尾的所有uri。正規表示式前面應加~。相應的請求將對映到/data/images目錄。

當nginx選擇乙個location塊來處理請求時,它首先檢查指定字首的location指令,記住字首最長的location,然後檢查正規表示式。如果與正規表示式匹配,nginx將選擇此location,否則,它將選擇之前記住的location。

**伺服器的最終配置如下所示:

}該伺服器將過濾以 .gif,.jpg 或 .png 結尾的請求並將它們對映到/data/images目錄(通過將uri新增到 root指令的引數位置),並將所有其他請求傳遞到上面配置的**伺服器。

要應用新配置,請按照前面幾節中的說明將reload訊號傳送到nginx。

nginx可用於將請求路由到fastcgi伺服器,該伺服器執行使用各種框架和程式語言(如php)構建的應用程式。

使用fastcgi伺服器的最基本nginx配置包括使用fastcgi_pass指令代替proxy_pass指令,以及使用fastcgi_param 指令來設定傳遞給fastcgi伺服器的引數。假設可通過localhost:9000訪問fastcgi伺服器,以上一節中的**配置為基礎,將proxy_pass指令替換為fastcgi_pass指令並將引數更改為 localhost:9000。在php中,script_filename 引數用於確定指令碼名稱,query_string 引數用於傳遞請求引數。結果配置為:

}這將設定乙個伺服器,該伺服器將把除靜態影象請求之外的所有請求路由到**伺服器,該**伺服器通過fastcgi協議執行在localhost:9000。

注意:

security.limit_extensions = .php .php3 .php4 .php5 .html

nginx 初學者指南

學習論壇 nginx 初學者指南nginx 初學者指南 配置檔案的結構 服務於靜態內容 設定簡單的 伺服器 設定fastcgi nginx有乙個主程序和幾個工作程序。主流程的主要目的是讀取和評估配置,以及維護工作流程。工作程序對請求進行實際處理。nginx使用基於事件的模型和依賴於作業系統的機制來有...

初學者mysql MySQL初學者使用指南

有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連線mysql 修改密碼 增加使用者等方面來學習一些mysql的常用命令。一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後...

DLL初學者指南

這裡有兩個方法來載入乙個dll 乙個方法是捷徑另乙個則相比要複雜些。捷徑是只鏈結到你.lib 檔案並將.dll檔案置入你的新專案的路徑中去。因此,建立乙個新的空的win32控制台專案並新增乙個原始檔。將你做的dll放入你的新專案相同的目錄下。include include declspec dlli...