nginx 基礎學習篇

2021-08-16 20:36:13 字數 4323 閱讀 1510

翻譯了官網nginx基礎篇章的英文, 應該說對初學者非常有幫助

向nginx傳送訊號:

nginx -s [signal]
signal有以下幾種:

1. stop: 快速關閉nginx伺服器

2. quit: 等nginx處理完當前請求,關閉伺服器。(執行該命令的人必須是啟動nginx的使用者)

4. reopen: 重開日誌檔案

nginx配置檔案由指令和指令塊組成:

指令: 乙個簡單的指令由 命令和引數 組成。指令的命令和引數使用空格隔開,使用分號結尾。

指令塊: 乙個指令塊包含很多簡單的指令。同時,指令塊不再使用分號結尾,而是使用大括號包裹起來。

關係: 指令塊內包含很多指令,指令塊通常被稱為環境(例如: events, http, server, location[定位]等環境), 放置在環境之外的指令被認為是位於主環境中的,events環境和http環境也是放置在主環境中的,而server環境放置在http環境裡面,location環境放置在server環境裡面。

配置檔案中,使用 `#` 號鍵注釋。

在配置檔案中新增乙個server配置便代表乙個服務功能,或說伺服器。該伺服器有特定的監聽埠,名稱。多個server環境互不影響。乙個nginx伺服器中可以配置多個伺服器,例如:1.1 靜態伺服器,用於html靜態網頁的瀏覽。

1.2 **伺服器,用於**請求至其他伺服器,並將響應回傳給客戶端。

1.3 郵件伺服器,用於**郵件。

例如:

#主環境

******_directives1 params1; #簡單指令

******_directives2 params2; #簡單指令

******_directives3 params3; #簡單指令

下面進行乙個實驗,根據請求,訪問放置在本地目錄/data/www/和/data/images下的檔案。

這個實驗將編輯nginx的配置檔案/etc/nginx/nginx.conf,並設定http環境內的server環境的location環境:

首先建立/data/www和/data/images目錄,放乙個index.html檔案到/var/www目錄,放一些到/data/images目錄下。

開啟預設配置檔案/etc/nginx.conf。預設配置檔案已經包含很多被注釋的server環境的例子。把所有類似於下面的環境都注釋掉,並新增乙個如下所示的新的環境:

}

3. 通常來說,乙個配置檔案可能包含多個server塊,這些server塊由監聽埠port和名稱servername區分開來。一旦nginx決定哪個server塊處理請求,它會根據server中定義的location塊的引數測試uri。所以在上面定義的http->server塊中新增localtion塊。如下所示:
location /
這個location塊指定」/」字首和請求中的uri進行比較。

當匹配到時,uri就會被新增到root指令的值後面,形成的路徑將請求本地檔案系統上的檔案。

如果有多個匹配的location塊,nginx選擇乙個最長的字首。

上面的例子中的字首最短,長度只有1,所以只有在找不到任何location匹配的時候才會使用這個location。

新增第二個location塊

location /images/

這個location(定位)塊將匹配uri請求中的 /images/(這個uri同樣匹配 [location /]塊, 但是這個請求太短了)。

最終的配置為:

# /data/images

location /images/

}}

這是乙個已經可以正常執行的配置。該配置下的nginx伺服器監聽埠80,可以通過http://localhost/ 訪問本地的/data/www/目錄下的index.html檔案。
nginx -s reload

nginx伺服器最頻繁使用的功能之一是**服務。這表示當nginx伺服器接受到乙個請求時,

會將請求傳遞給**伺服器後,獲取**伺服器的響應,並回送給客戶端。

接下來我們給nginx配置乙個最簡單的**服務。該配置下的nginx提供或者檔案的請求的

服務,將其他請求傳送給**伺服器。下面這個例子中,兩個服務都定義在乙個nginx伺服器上。

配置乙個伺服器。

server 

}

這個server環境配置了乙個監聽8080埠,並將所有請求對映到本地目錄/data/upl下的伺服器。

注意:這個root指令並不在location中。當server環境下的location被選中為乙個請求服務,

並且這個location並不包含自己的root指令時,使用server環境中的root代替。

2. 建立/data/upl目錄,並在其中放置乙個index.html檔案。

3. 使用上一節中的伺服器配置,修改並新增下面的配置,使其成為**伺服器配置。

server 

location /images/

}

接下來我們修改上面server環境中的第二個location配置。當前,這個location配置對映請求中的 /images/ 字首為 /data/images/ 目錄。現在我們修改它,使他匹配 乙個請求各類(字尾名不同)的請求。

這個location環境的引數是乙個匹配所有以 .git, .jpg 或 .png 結尾的uri表示式。

正規表示式應該領先於 ~ 符號。對應的請求將被對映到 /data/images/ 目錄。

當nginx選擇乙個location環境服務乙個請求時,它首先檢查所有location環境的指定字首,

記住其中最長的字首,並使用正規表示式檢驗請求是否和字首匹配。

如果匹配,nginx將選擇這個location環境,否則nginx將選擇上乙個記住的location環境,以此迴圈。

直到尋找到匹配的location環境。

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

}

這個服務將會過濾所有以 .gif, .jpg 或 .png 結尾的請求,將其對映到目錄 /data/images/ 目錄下。並將所有其他的請求轉送到上面配置的**伺服器。
nginx可用來將請求傳送到fastcgi伺服器,fastcgi伺服器是由各種程式語言(php)和框架構建的執行程式。

幾乎所有配置了fastcgi伺服器的nginx配置都使用fastcgi_pass指令代替proxy_pass指令,

並且fastcgi_pass指令設定了傳送到fastcgi服務的引數。

假設fastcgi伺服器可以通過localhost:9000訪問。

以上一節的配置為基礎,將proxy_pass指令替換為fastcgi_pass指令,並將引數改為 localhost:9000。

在php中,script_filename引數用於確定指令碼的名稱,而query_string 引數用於傳遞請求引數。最終的配置:

http 

}}

這個配置將建立乙個fastcgi服務。這個伺服器將通過fastcgi協議傳送除了與/images/匹配的 所有之外的所有請求到localhost:9000。
http 

location /suchptemplate/

}server

location /images/

}}events

Nginx系統學習篇(1) 基礎概念

正向 也就是傳說中的 他的工作原理就像乙個跳板。簡單的說,我是乙個使用者,我訪問不了某 但是我能訪問乙個 伺服器,這個 伺服器呢,他能訪問那個我不能訪問的 於是我先連上 伺服器,告訴他我需要那個無法訪問 的內容,伺服器去取回來,然後返回給我。從 的角度,只在 伺服器來取內容的時候有一次記錄。結論就是...

Nginx 高階 架構基礎篇

1 nginx的請求處理流程 http狀態機 等待上游epoll請求,當記憶體滿額時,使用執行緒池磁碟阻塞呼叫。2 nginx的程序結構 ps aux grep nginxmaster作為父程序,有很多子程序,nginx的父子程序是通過訊號管理的。kill signup 9170signup與rel...

laravel學習篇 基礎篇

route get function route get hello function route post color function route match get post color1 function route any multy function 路由引數 route get use...