Nginx server 和 location 優先順序
Nginx是一個輕量形的 WEB 伺服器,功能很強大。 其中 server 和 location 可以有很多種的設定方式,也因此需要有個機制去選擇出到底該用哪一個。 這篇文章會說明 Nginx 選擇 server 和 location 的方法。 Server 當設定檔中有多個 server (...) 區塊,Nginx會怎麼選擇呢? server的選擇相對比較簡單,在開始之前,要先了解Nginx怎麼編譯 Server 裡面的 listen 。 預設的 listen 通常是 : listen 80 default_server; 但是一個完整的描述方法因該是: listen IP:PORT; 而缺少的部分(不管是缺少IP還是Port號)Nginx會自動使用預設值補齊。 補齊的方式如下 缺少IP 如 listen 80;,Nginx會自動補0.0.0.0,變成 : listen 0.0.0.0:80; 缺少Port 如 listen 10.1.1.1;,Nginx會自動補80 Port號,變成 : listen 10.1.1.1:80; 兩個都缺 也就是沒有使用 listen ,nginx會自動補上 listen 0.0.0.0:80; 知道自動補齊的方法後,就可以開始討論選擇server的順序。 首先 Nginx會先檢查 IP:Port 的匹配。 選擇順序為 listen 有指定IP (如 10.1.1.1) listen 無指定或使用0.0.0.0 第二 比對 server_name 當第一個IP:Port匹配檢查完後,發現有多個符合的結果,才會繼續比對。 選擇順序為 1. 完整比對到server_name,如 server_name www.example.com; 2. server_name前面有 * 符號,如 server_name *.example.com; 3. server_name後面有 * 符號,如 server_name www.*; 4. server_name是正規表示法,如 server_name ~www.example[1-3].com; 5. 全部的server_name都不匹配,此時Nginx會使用 listen 後面有 defa...