server段的location指令:
文法規則:
location [=|~|~|!~|!~|^~|/] /uri/
{
configuration
}
說明:
= 是精确比對,隻有完全比對才會執行 configuration。
~ 開頭是區分大小寫比對成功才執行configuration。
~* 開頭是不區分大小寫比對成功才執行configuration。
!~ 開頭是區分大小寫不比對成功才執行configuration。
^~ 表示比對以一個字元或字元串開頭成功才執行configuration。
location配置優先級别
比對規則有如下幾種類型:
普通比對:
= URI { configuration } #精确比對或完全比對
~ / URI { configuration } #通用比對,當有多個location比對時,當所有都不比對時将比對 /
“ ”URI { configuration } #空格比對
^~ URI { configuration } #字首比對
~*$ URI { configuration } #字尾比對
正規表達式比對:
~ URI { configuration } #區分大小寫比對
~ URI { configuration } #不區分大小寫比對
!~ URI { configuration } #區分大小寫不比對
!~ URI { configuration } #不區分大小寫不比對
以上幾種比對規則的優先級:
整體上先進行普通比對,再進行正則比對,如果正則不比對,就退回到上一個普通比對。普通比對沒有順序限制,哪個location的表達式最比對最精準,就使用哪個location的configuration。
= 精确比對的優先級别最高,會最先比對,一旦比對成功,将不再比對其他location規則。
若精确比對不成功,則進行普通比對。
如果普通比對有多個比對且命中多個比對,則使用表達式最長的記錄結果(例如:^~ /a和^~ /aaa.其中^~ /aaa為最長表達式),結束後續比對。
如果普通比對沒有成功,則進行正則比對。比對順序按照書寫順序從上到下進行比對,一旦比對成功一個就結束後續比對。
如果正則比對未成功,則退回到普通比對進行比對,普通比對沒有順序限制,按照location後的表達式的長短來确定命中結果。
root,alias和try_fiels的指令:
文法:
root path
配置段:http,server,location,if
alias path
配置段:location
假如通路位址是: http://www.XXX.com/a/
例如:
location ~ /a/ {
root /var/www/
完整的URL結果是:root指令之後的路徑+location之後的URI:/a/,即 /var/www/a/
假如通路位址是: http://www.XXX.com/a/test.html
alias /var/www/
完整的URL結果是:alias指令後面的路徑+location後面表達式比對到的目錄或檔案。即:/var/www/test.html
需要注意的是使用alias時目錄後面要加/,不然會找不到。
(網上部落格摘抄)
基本文法: try_files file1[file2 file3 ...] uri 或 try_files file1 [file2 file3 ...] = code
解釋: file :檔案或檔案路徑(檔案夾) uri:預設檔案 code:狀态碼 連起來就是:試圖尋找檔案(或檔案夾)file1,如果找到則傳回,如果沒找到緊接着尋找file2,file3..., 若果都未找到,則傳回預設檔案uri(第二種code為傳回狀态碼)
作用配置段:server location
關于vue配置解釋:vue去除#号,除了前端作修改,伺服器端也要作相應的修改,具體為-在location 裡加上try_files $uri $uri/ /index.html
$uri:nginx 一個參數,其代表的是域名後到問号之間的這一部分,比如:www.xxxx.com/index.php?a=1&b=2,那麼$uri = index.php
舉例:http://www.xxxx.com/case/goods?type =1 & page =2; $uri 就是case/goods,這個時候系統就會去找$root/case/goods($root就是你nginx配置的root /xxx/xxx/),沒有goods檔案,繼續找case/goods這個目錄,也沒找到,這時候直接傳回index.html檔案給浏覽器,浏覽器根據url再進行處理