nginx 學習筆記 2 nginx新手入門

2021-07-11 03:29:21 字數 4363 閱讀 4759

這篇手冊簡單介紹了nginx,並提供了一些可以操作的簡單的工作。前提是nginx已經被安裝到你的伺服器上。如果沒有安裝,請閱讀上篇:nginx 學習筆記(1) nginx安裝。這篇手冊主要內容:1. 如何啟動和停止nginx,如何載入nginx配置;

2.配置檔案的結構;3.如何安裝nginx來做靜態內容的伺服器;4,如何配置nginx作為**伺服器;5:如何連線fastcgi應用。

nginx有乙個主程序和多個工作程序。主程序的作用是讀和驗證配置檔案,啟動工作程序。工作程序正在處理請求。nginx應用事件驅動模型和os依賴機制來在工作程序之間有效的分發請求(負載均衡)。工作程序的數目定義在配置檔案中,在乙個特定的配置中一般是固定的或者可以根據可用的cpu 核心來動態修改這個數量。工作程序參考:

nginx及其模組如何工作取決於配置檔案的定義。預設情況下,配置檔案為:nginx.confand 目錄為/usr/local/nginx/conf,/etc/nginx, 或者/usr/local/etc/nginx.

啟動nginx,直接執行可執行檔案即可。一旦nginx啟動完成,可以通過可執行引數s來控制nginx的執行。

語法如下:

nginx -s signal
signal可選項

例如,停止nginx但等待工作程序處理完成當前的請求,可以使用下面的命令:

nginx -s quit
注意:這個命令的執行者必須是和啟動nginx的是同乙個使用者。

直接修改配置檔案將不會立即生效,需要重啟nginx或者向nginx傳送reload配置檔案命令:

nginx -s reload
nginx程序也可以通過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 

location /images/

}

上述已經是乙個可以執行的伺服器的配置了,該伺服器監聽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檔案來應答。

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):

server 

location /images/

}

我們將修改第二個位置塊的配置,以前是對映/image/字首的請求到/data/images/目錄下的檔案,為了和典型的副檔名相匹配,修改的位置塊配置檔案如下:

location ~ \.(gif|jpg|png)$
這個引數是乙個正規表示式,它匹配以.gif,.jpg或者.png結尾的url。乙個正規表示式應該以~開頭。響應的請求將被對映到/data/images目錄。

當nginx選擇乙個位置塊為請求提供服務時,它首先檢測指定帶字首的位置指令,別忘記優先選擇最長字首的,再檢測正規表示式。如果和乙個正規表示式匹配,nginx選擇這個位置塊,否則選擇最初的那個。

完整的**伺服器配置如下:

}這個伺服器將過濾以以.gif,.jpg或者.png結尾的請求,然後對映到目錄/data/images下(通過增加url到root指令引數),**其它請求到配置的被**伺服器中。

更多用來配置**連線的指令可以參考:

建立fashcgi**

nginx可以用來追蹤到fastcgi 伺服器上的請求,fastcgi伺服器可以執行不同框架不同程式語言(例如php)構建的應用程式。

適用fastcgi伺服器執行的nginx最基本配置包括:使用fastcgi_pass指令而非proxy_pass;fastcgi_param指令設定傳送引數到fastcgi伺服器。假定可以通過http://localhost:9000來訪問fastcgi伺服器。使用上章的**伺服器配置,替換proxy_pass指令為fastcgi_pass指令並改變引數到localhost:9000.對於php,script_filename引數用來決定指令碼名稱,query_string引數用來傳送請求引數,完整配置如下:

}

這將建立乙個伺服器,該伺服器追蹤到被**的伺服器的所有請求(靜態除外),這個伺服器使用fastcgi協議通過localhost:9000來操作。

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 檢查版本 在...