從這一篇部落格開始,正式介紹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 ...