Nginx學習(二) location的相關配置

2021-10-11 11:37:07 字數 2447 閱讀 9156

從這一篇部落格開始,正式介紹nginx的一些使用,這一篇會總結一下虛擬主機和location的相關配置。參考過很多部落格的內容,但是關於nginx中location的配置總結的很全的並沒有多少,這裡根據官網來進行簡單總結。

所謂的虛擬主機,其實就是在一套伺服器上構建多個主機,這些主機是虛擬出來的,這個類似tomcat中虛擬主機的配置一樣,關於虛擬主機的配置,在nginx官網也有相關介紹——nginx-server配置官網介紹。

基本每乙個server模組的結構如下所示

server

}

listen,server_name,location三個屬性,listen支援ip+埠的配置,server_name支援正規表示式的配置,同時location可以存著多個,關於location的配置是我們這篇部落格重點要總結的。

乙個簡單的server配置例項

server 

}

nginx官網,關於location的總結。

關於nginx中location的語法規則,官網的總結如下

syntax:	location [

=| ~ | ~* | ^~ ] uri

location @name

default: —

context: server, location

相關例項

官網中關於location的介紹還有以下一段話

翻譯過來,如下

location可以通過字首字串和正規表示式來定義兩種定義形式。正規表示式通過~*字首或者~字首來進行定義,這兩者唯一的不同在於前者是大小寫不敏感的,後者是大小寫敏感的。 為了找到與請求匹配的location,nginx首先根據字首字串的匹配方式進行匹配。在匹配結果中找到最長的匹配結果,然後記住這個最長的匹配結果。之後開始正則的匹配,找到第乙個正則匹配的結果,這個結果就會作為最終的返回結果,如果沒有找到與之對應的正則匹配結果,則直接返回之前字首匹配的結果。整體匹配流程可以通過如下流程表示。稍後會進行例項演示。

現在可以回到location的語法匹配

syntax:	location [

=| ~ | ~* | ^~ ] uri

其中=是精準匹配,~~*是正則匹配,^~是非正則匹配(簡單的說就是不使用正則匹配)。

在正式開啟例項之前,需要先介紹root和alias的區別。首先,在如下路徑下建立幾個檔案

/usr/local/software/nginx/ngtest/pages
簡單建立四個html檔案,每個檔案做乙個簡單的區分,為後面的例項做準備。

root配置——配置的是請求的根目錄

例項

location /pages
如果傳送請求:/pages/a.html,伺服器最終會返回/ngtest/pages/a.html的頁面。

alias配置——配置的是請求別名

例項

location /alias.html
如果傳送請求:/alias.html,伺服器最終會返回/ngtest/pages/b.html的頁面。

總結:root的處理結果是將url新增到root值的後面,即為最終返回客戶端的檔案路徑。可以根據第乙個例項看出。

alias的處理結果是替換指定位置的url,例如例項中的alias.html直接替換為alias的值,最終返回的是pages資料夾下的b頁面。

在之前已經列舉了幾個例項,這裡不會再總結普通匹配和精確匹配

例項

location ~* \.(gif|jpg|html)

location ^~ /d.html

第乙個會訪問到c頁面,第二個會訪問到d頁面。

簡單梳理了一下location的內容,後續會在此基礎上完成負載均衡的例項

nginx 基礎模組 2 虛擬機器location等

一 虛擬主機 server 虛擬機器主機只需要在conf.d目錄裡 另起乙個.conf 檔案,裡面把server段配好就行了,如果是相同ip埠 用網域名稱來區分,就像上面 一樣 二 日誌 nginx 基礎模組 2 虛擬機器location等 這些欄位是控制日誌輸出內容的 remote addr變數 ...

Nginx學習筆記(二)

在 訪問過程中,經常會遇見各種各樣的錯誤,如找不到訪問的頁面則會提示404 not found 錯誤,沒有訪問許可權會提示403 forbidden 等,對於普通人而言,這樣的提示介面 並不友好。在nginx 的主配置檔案中,給出了以下的處理方式。errr page 500 502 503 504 ...

Nginx 學習 二 啟動

nginx 啟動命令 直接執行可執行二進位制檔案nginx 即可.study zk02 nginxnginx 啟動完成之後,就可以使用 s 接收訊號,處理其他請求了.nginx s signalsignal 訊號如下 where signal may be one of the following ...