nginx 初學者指南

2021-10-07 05:07:06 字數 4908 閱讀 7582

學習論壇:

nginx 初學者指南nginx 初學者指南

配置檔案的結構

服務於靜態內容

設定簡單的**伺服器

設定fastcgi**

nginx有乙個主程序和幾個工作程序。主流程的主要目的是讀取和評估配置,以及維護工作流程。工作程序對請求進行實際處理。nginx使用基於事件的模型和依賴於作業系統的機制來有效地在工作程序之間分配請求。工作程序的數量在配置檔案中定義,可以針對給定的配置固定,也可以自動調整為可用cpu核心的數量(請參閱 worker_processes)。

nginx及其模組的工作方式在配置檔案中確定。預設情況下,該配置檔案被命名nginx.conf ,並放入目錄 /usr/local/nginx/conf, /etc/nginx或 /usr/local/etc/nginx。

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

nginx -s signal

其中訊號可能是以下之一:

stop — 快速關機

quit — 正常關機

reload — reloading the configuration file

reopen — 重新開啟日誌檔案

例如,要在等待工作程序完成對當前請求的服務的過程中停止nginx程序,可以執行以下命令:

nginx -s quit
nginx -s reload
也可以借助unix工具(如kill實用程式)將訊號傳送到nginx程序。在這種情況下,將訊號直接傳送給具有給定程序id的程序。預設情況下,nginx主程序的程序id寫入 nginx.pid目錄 /usr/local/nginx/logs或中的 /var/run。例如,如果主程序id為1628,要傳送導致nginx正常關閉的quit訊號,請執行:

kill

-s quit 1628

為了獲取所有正在執行的nginx程序的列表,ps 可以使用該實用程式,例如,通過以下方式使用:

ps

-ax | grep nginx

有關將訊號傳送到nginx的更多資訊,請參見 控制nginx。

配置檔案的結構

nginx由受配置檔案中指定的指令控制的模組組成。偽指令分為簡單偽指令和塊偽指令。乙個簡單的指令由名稱和引數組成,這些名稱和引數之間用空格分隔,並以分號(;)結尾。塊指令的結構與簡單指令的結構相同,但是它以分號(而不是分號)結尾,並帶有一組用括號()括起來的附加指令。如果塊指令在花括號內可以有其他指令,則稱為上下文(示例: events, http, server和 location)。

放置在任何上下文外部的配置檔案中的指令都被視為在 主上下文中。在events和http指令駐留在main上下文server 中http,並location在 server。

#符號 後的其餘行被視為注釋。

提供靜態內容

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

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

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

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

將以下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/。響應以開頭的uri請求/images/,伺服器將從/data/images目錄中傳送檔案。例如,響應 http://localhost/images/example.png請求,nginx將傳送/data/images/example.png檔案。如果該檔案不存在,nginx將傳送乙個指示404錯誤的響應。uri不以開頭的請求/images/將被對映到/data/www目錄中。例如,響應 http://localhost/some/example.html請求,nginx將傳送/data/www/some/example.html檔案。

要應用新配置,請啟動尚未啟動reload的nginx,或通過執行以下命令將訊號傳送到nginx的主程序:

nginx -s reload
萬一某些功能無法正常工作,您可以嘗試在目錄或中 查詢原因access.log和 error.log檔案 。

/usr/local/nginx/logs/var/log/nginx

設定簡單的**伺服器

nginx的一種常用用法是將其設定為**伺服器,這意味著伺服器可以接收請求,將請求傳遞給**伺服器,從請求中檢索響應並將它們傳送給客戶端。

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

首先,通過向server nginx的配置檔案新增乙個以下內容來定義**伺服器:

server 

}

這將是乙個簡單的伺服器,它偵聽埠8080(以前,listen由於使用了標準埠80 ,因此未指定偽指令)並將所有請求對映到/data/up1本地檔案系統上的目錄。建立此目錄並將index.html檔案放入其中。請注意,該root指令位於 server上下文中。這樣root,當指令用於 location選擇用於服務請求塊不包括自己的root指令。

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

server 

location /images/

}

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

location ~ \.

(gif|jpg|png)$

該引數是乙個正規表示式匹配結尾的所有uri .gif,.jpg或.png。正規表示式應以開頭~。相應的請求將被對映到/data/images 目錄。

當nginx選擇乙個location塊來服務請求時,它首先檢查 指定字首的位置指令,記住location 最長的字首,然後檢查正規表示式。如果存在與正規表示式匹配的內容,則nginx會選擇此匹配項location,否則,它將選擇之前記住的匹配項 。

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

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

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

還有許多其他 指令可用於進一步配置**連線。

設定fastcgi**

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

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

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

NGINX初學者指南

2.配置檔案的結構 3.提供靜態內容 4.設定簡單的 伺服器 5.設定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...