nginx 基本入門

2021-07-29 02:41:24 字數 4883 閱讀 8736

)。執行可執行檔案就可以開啟 nginx,比如:

// -c 為 nginx 的配置檔案

nginx -c /usr/local/nginx/conf/nginx.conf

如果,nginx 已經開啟,那麼它就可以通過使用-s引數的可執行命令控制。使用下列格式:

nginx -s signal
signal 可以為下列命令之一:

kill

-s quit 1628

為了得到所有正在執行的 nginx 程序,我們可能會使用到 ps 工具,比如,像下列的方式:

$ ps -ax | grep nginx

// 結果為:(下面是單核 cpu 的情況)

516 pts/0 d+ 0:00 grep --color=auto nginx

1156 ? s 1:22 nginx: worker process

27999 ? ss 0:00 nginx: master process ./nginx

更多關於傳送訊號給 nginx,可以參考 nginx 控制。

nginx 是由一些模組組成,我們一般在配置檔案中使用一些具體的指令來控制它們。指令被分為簡單指令和塊級命令。乙個簡單的指令是由名字和引數組成,中間用空格分開,並以分號結尾。例如:

// 簡單指令

root /data/www;

塊級指令和簡單指令一樣有著類似的結構,但是末尾不是分號而是用大括號包裹的額外指令集。如果乙個塊級指令的大括號裡有其他指令,則它被叫做乙個上下文(比如:events,http,server,和location)。

在配置檔案中,沒有放在任何上下文中的指令都是處在主上下文中。eventshttp的指令是放在主上下文中,server放在http中,location放在server中。

#開頭的行,會被當做注釋。

}}乙個重要的網路伺服器的任務是處理檔案(比如或者靜態 html 檔案)。這裡,你會實踐乙個例子,檔案會從不同的目錄中對映(取決於請求):/data/www(放置 html 檔案)和/data/images(放置)。這需要配置一下檔案,將帶有兩個location的指令的server的塊級命令放在server指令中。

首先,建立乙個/data/www目錄,然後放置乙個事先寫好內容的 index.html 檔案。接著,建立乙個/data/images目錄,然後放置一些。

下一步,開啟配置檔案。預設的配置檔案已經包含了一些關於server指令的樣式,大多數情況下直接把他們給注釋掉。現在,注釋掉其他的區塊,然後寫乙個新的server區塊:

}通常,該配置檔案可能會包含多個server指令。這些server指令監聽不同的埠和伺服器名。一旦 nginx 決定哪個服務程序處理請求,它會根據在 server 塊級指令中定義好的location指令的引數,來匹配請求頭中指定的 uri。

將下列 location 指令新增到 server 指令中:

location /
location指令相對於請求中的 uri 執行了 「/」 的字首。為了匹配請求,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目錄中,返回對應的檔案。例如,nginx 會返回/data/images/example.png檔案,當接收到http://localhost/images/example.png的請求響應時。如果該檔案不存在,nginx 會返回乙個 404 錯誤的響應。沒有以/images/開頭的 uri 的請求,將會直接對映到/data/www目錄中。比如,響應http://localhost/some/example.html的請求,nginx 會傳送/data/www/some/example.html檔案。

為了使用新的配置檔案,如果還沒開啟 nginx 需要先開啟,然後將過載訊號傳送給 nginx 的主程序,通過執行:

nginx -s reload
如果你發現有些地方出了問題,你可以在/usr/local/nginx/logs或者/var/log/nginx目錄下的access.logerror.log檔案中,找到原因。

nginx 常常用來作為**伺服器,這代表著伺服器接收請求,然後將它們傳遞給被**伺服器,得到請求的響應,再將它們傳送給客戶端。

我們將配置乙個基本的**伺服器,它會處理本地檔案的請求並返回其他的請求給被**的伺服器。在這個例子中,兩個伺服器都會定義在乙個 nginx 例項中。

首先,通過在 nginx 配置檔案中新增另乙個server區塊,來定義乙個被**的伺服器,像下面的配置:

server 

}

上面就是乙個簡單的伺服器,它監聽在 8080 埠(之前,listen並沒被定義,是因為預設監聽的 80 埠)並且會對映所有的請求給 本地檔案目錄/data/up1。建立該目錄,然後新增index.html檔案。注意,root指令是放在server上下文中。當響應請求的location區塊中,沒有自己的root指令,上述的root指令才會被使用。

接著,使用前面章節中的server配置,然後將它改為乙個**服務配置。在第乙個location區塊中,放置已經新增被**伺服器的協議,名字和埠等引數的proxy_pass 指令(在這裡,就是http://localhost:8080):

server 

location /images/

}

我們將修改第二個location區塊,使他返回一些典型字尾的檔案請求,現在它只會對映帶有/images/字首的請求到/data/images目錄下。修改後的location指令如下:

location

~ \.(gif|jpg|png)$

該引數是乙個正規表示式,它會匹配所有以.gif.jpg或者.png結尾的 uris。乙個正規表示式需要以~開頭。匹配到的請求會被對映到/data/images目錄下。

當 nginx 在選擇location去響應乙個請求時,它會先檢測帶有字首的location指令,記住先是檢測帶有最長字首的location,然後檢測正規表示式。如果有乙個正則的匹配的規則,nginx 會選擇該location,否則,會選擇之前快取的規則。

最終,乙個**伺服器的配置結果如下:

}該伺服器會選擇以.gif.jpg,或者.png結束的請求並且對映到/data/images目錄(通過新增 uri 給 root 指令的引數),接著將其他所有的請求對映到上述被**的伺服器。

為了使用新的配置,像前幾個章節描述的一樣,需要向 nginx 傳送過載訊號。

這還有很多其他的指令,可以用於進一步配置**連線。

Nginx 基本入門

首先,nginx 是乙個 http 伺服器,可以將伺服器上的靜態檔案 如html 通過 http 協議展現給客戶端 配置 server 什麼是反向 客戶端本來可以直接通過 http 協議訪問某 應用伺服器,如果 管理員在中間加上乙個 nginx,客戶端請求 nginx,nginx 請求應用伺服器,然...

Nginx基本入門

首先,nginx是乙個http伺服器,可以將伺服器上的靜態檔案 如html 通過http協議展現給客戶端。配置 123456 server 什麼是反向 客戶端本來可以直接通過http協議訪問某 應用伺服器,如果 管理員在中間加上乙個nginx,客戶端請求nginx,nginx請求應用伺服器,然後將結...

Nginx基本入門

首先,nginx是乙個http伺服器,可以將伺服器上的靜態檔案 如html 通過http協議展現給客戶端。配置 server 什麼是反向 客戶端本來可以直接通過http協議訪問某 應用伺服器,如果 管理員在中間加上乙個nginx,客戶端請求nginx,nginx 請求應用伺服器,然後將結果返回給客戶...