Nginx基礎應用

2021-10-06 12:40:31 字數 3798 閱讀 2118

nginx有乙個主程序和幾個工作程序。主程序主要是讀取和解析配置檔案,以及保持工作程序工作;工作程序處理實際的請求。nginx利用基於事件的模型和執行的作業系統在工作程序之間有效地分配請求。工作程序的個數在配置檔案中定義,推薦設定為cpu的核數。

nginx配置檔案中的配置決定了nginx如何工作,配置檔案的名字一般叫做nginx.conf,它的目錄是/usr/local/nginx/conf,/etc/nginx或者/usr/local/etc/nginx。

想要執行nginx,執行可執行檔案即可。

/usr/sbin/nginx

nginx一旦執行起來,它就可以使用-s引數控制,語法格式如下:

nginx -s signal

signal的列表如下:

例如,等nginx程序處理完當前的所有請求後,停止nginx程序,命令如下:

nginx -s quit

如果修改了nginx配置檔案,並且想要配置檔案生效,應當執行如下命令:

nginx -s reload

當主程序接收到reload命令時,它會檢查新配置檔案的語法並嘗試應用新的配置檔案,如果成功了,主程序會啟動新的工作程序並且傳送訊息停止舊的工作程序;

如果配置檔案有錯誤,主程序將回滾並繼續使用舊的配置檔案工作。舊的工作程序收到關閉命令後,停止接受新的請求,並且直到當前的所有請求被處理完後,舊的工作程序關閉。

-s引數也可以通過unix命令傳送給nginx程序。這種情況下,-s引數通過給定的nginx程序id傳送給nginx程序。nginx程序id一般寫在nginx.pid檔案中,目錄通常在/usr/local/nginx/logs 或者 /var/run。

例如:如果nginx的主程序id是1628,想要優雅的關閉nginx,可執行以下命令:

kill -s quit 1628

獲取當前正在執行的nginx程序,可執行如下命令:

ps -ax | grep nginx

nginx的配置檔案由多個指令集組成,指令集分為簡單指令和模組指令。簡單的指令由名字和引數組成,由空格和分號(;)隔開。塊指令和簡單指令有著相同的結構,但是「;」被「{}」取代,如果塊指令中還有其他的塊指令,它被稱作上下文(context)。例如:events,http,server,location。

#後面的檔案是注釋。

nginx的乙個重要的功能就是服務靜態檔案(例如:和靜態html)。在這裡,我們舉乙個例子,根據不同的請求,提供不同的檔案服務,本地的目錄為/data/www,該目錄存放html檔案,/data/image存放檔案。我們需要修改配置檔案,在http塊中增加乙個server塊,在server塊中增加兩個location塊。

首先,我們在/data/www目錄下建立乙個html檔案,在檔案中隨意寫一些內容,並且在/data/image目錄下隨機放一些。

接下來,我們開啟配置檔案,檔案中預設寫了一些server的例子,我們將其全部注釋掉。從現在開始,我們新加乙個server塊,如下:

http }
通常情況下,配置檔案中,包含多個server塊,它們通過監聽不同的埠和服務名稱區分。一旦nginx決定哪個server處理請求,它就會監測請求頭中的uri,和server塊中的location指令中的引數是否一致。

向server塊中新增location塊,如下:

location /

location塊中指定「/」為字首和請求中的uri進行比較,匹配的請求,uri將會被加入到root指令集中指定的路徑,「/data/www」,生成乙個訪問本地檔案系統的檔案請求路徑。上面的location提供了乙個最小的字首,當其他的location塊都不匹配時,這個location將被使用。

下面,我們加入第二個塊,如下:

location /images/
它將匹配所有以「/images/」開頭的請求,location / 也匹配這樣的請求,但是只是最小的匹配。

配置的最終結果如下:

server

location /images/}

這是乙個可以工作的配置,它監聽80埠,並且可以通過本機的http://localhost/ 訪問。以/images/開頭的請求,服務將從/data/images目錄傳送檔案。例如:請求http://localhost/images/example.png,

將會以/data/images/example.png檔案作為響應。如果這個檔案不存在,將會返回404錯誤。請求的uri不是以/images/開頭的,將會對映到/data/www目錄中,

例如:http://locahost/some/example.html

將會對映到/data/www/some/example.html。

要使配置生效,直接啟動nginx(沒有啟動)或過載配置檔案

nginx -s reload

如果nginx沒有向配置的那樣工作,你可以在access.log和error.log中找到原因,日誌的目錄 /usr/local/nginx/logs 或者 /var/log/nginx。

nginx作為**伺服器使用是比較頻繁的,它接受請求,分發它們到被**的伺服器,取回響應,並把它們傳送給客戶端。

我們將配置乙個基本的**,它從本地目錄服務請求,傳送其他的請求到被**的伺服器,在本例中,兩個server將在乙個nginx例項中配置。

首先,通過新加乙個server塊定義被**的服務,如下:

server

}

這是乙個簡單的服務,它監聽8080埠(上乙個server中,listen並沒有指定,它監聽預設的埠80),它對映所有的請求到本地檔案系統/data/up1目錄。

建立這個目錄並新建index.html檔案。

值得注意的是,在server上下文中配置root,當請求選中的location塊中,沒有root指令時,將會使用server中配置的root。

接下來,我們修改先前的server塊,使他成為乙個**伺服器配置。在第乙個location塊中,我們新增proxy_pass指令,它的引數為http://localhost:8080,如下:

​​​​​​​server

location /images/

}

我們將修改第二個location塊,它現在對映以/images/開頭的請求到/data/images目錄。我們修改其為通過副檔名匹配的方式,匹配請求。如下:

這個引數是乙個正規表示式,它匹配所有以.gif,jpg,png結尾的請求,在正規表示式之前必須出現「~」。匹配的請求將對映到/data/images目錄。

當nginx為乙個請求選擇服務塊時,它首先檢查指定字首的location,並記住最長的字首,然後檢查指定正規表示式的location,如果請求匹配了正規表示式,nginx將選擇這個location服務請求,否則,將選擇先前記住的最長的字首location。

**服務的server配置如下:

這個服務將過濾以.gif,.jpg,.png結尾的請求,並將它們對映到/data/images目錄,其他的請求將被**到前面配置的被**的服務。要是配置生效,reload配置即可。

nginx的基礎應用

今天我們將介紹一些nginx的簡單應用,啟動 停止nginx,過載nginx的配置,nginx配置檔案的格式,如何配置nginx服務靜態資源,如何配置nginx作為反向 伺服器。nginx有乙個主程序和幾個工作程序。主程序主要是讀取和解析配置檔案,以及保持工作程序工作 工作程序處理實際的請求。ngi...

nginx的基礎應用

nginx的基礎應用 一 簡介 今天我們將介紹一些nginx的簡單應用,啟動 停止nginx,過載nginx的配置,nginx配置檔案的格式,如何配置nginx服務靜態資源,如何配置nginx作為反向 伺服器。nginx有乙個主程序和幾個工作程序。主程序主要是讀取和解析配置檔案,以及保持工作程序工作...

nginx的基礎應用(續)

通過多個例項進行負載均衡是乙個比較常用的技術,它用來是資源利用最大化 提高通過率 降低延遲響應 確保容災等。nginx最簡單的負載均衡配置如下 nginx的反向 實現包含負載均衡的種類 http https fastcgi uwsgi scgi和快取等。如果要用https的負載均衡,只需要使用htt...