本節書摘來異步社群《精通nginx》一書中的第2章,第2.6節,作者: 【瑞士】dimitri aivaliotis 譯者: 陶利軍 責編: 陳冀康,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
location指令可以用在虛拟伺服器server部分,并且意味着提供來自用戶端的uri或者内部重定向通路。除少數情況外,location也可以被嵌套使用,它們被作為特定的配置盡可能地處理請求。
location定義如下。
或者是命名location。
命名location僅對内部通路重定向,在進入一個location之前它會保留被請求的uri部分。命名location隻能夠在server級别定義。
表2-7中的修飾符會影響location的處理。

當一個請求進入時,uri将會被檢測比對一個最佳的location。
沒有正規表達式的location被作為最佳的比對,獨立于含有正規表達式的location順序。
在配置檔案中按照查找順序進行正規表達式比對,在查找到第一個正規表達式比對之後結束查找,那麼就由這個最佳的location提供請求處理。
這裡比較比對描述的是解碼uri,例如,在uri中的 "%20",将會比對location中的 " " (空格)。
命名location僅可以在内部重定向的請求中使用。
表2-8中的指令僅在location中使用。
另外,http部分的其他指令也可以在location中指定,參考附錄a指令參考有完整清單。
指令try_files在這裡也值得一提,它也可以用在server部分,但是最常見的還是在location部分中。try_files指令将會按照給定它的參數列出的順序進行嘗試,一個被比對的将會被使用。
它經常被用于從一個變量去比對一個可能的檔案,然後将處理傳遞到一個命名location,看下面的例子。
在這裡有一個隐含的目錄索引,如果給定的uri作為一個檔案沒有被找到,那麼處理将會通過代理被傳遞到appserver。我們将會在本書的其他部分讨論如何最好地使用location、try_files和proxy_pass來解決特定的問題。
除以下字首外,locations可以被嵌套。
具有 "=" 字首。
命名location。
最佳實踐表明正規表達式location被嵌套在基于字元串的location,看下面的例子。