文章

顯示從 7月, 2018 起發佈的文章

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

linux文字修改大師-sed-01-基本介紹

圖片
會寫這篇文章,主要是為了自己可以記住龐大的sed功能。 章節的編排主要是依據功能性。 個人使用sed的主要原因是自動化修改設定檔。 目前看過最好的sed和awk中文教學網站大概是底下這個連結 http://wanggen.myweb.hinet.net/ach3/ach3.html 本篇文章主要是依照 GUN 的 sed所撰寫,連結為 https://www.gnu.org/software/sed/manual/sed.html 這邊提供一些線上的正規表示法網頁,可以即時知道自己寫的正規是否有匹配 https://regex101.com/ 裡面有很多範例可以直接複製使用 https://regexr.com/ 可使用replace功能, 方便驗證 command s 是否正確,裡面還有正規的符號參考 sed簡介 學習sed建議具備正規表示法的基礎,沒有此基礎也可學習。 GUN的sed簡介說到,sed是一種串流型態的文字編輯器 類似一個管道(pipe),特別的是,sed會在管道中間進行文字的取代、刪除、插入等功能。 input =======>output               filter sed的input可以是一個或多個檔案、stdin或前一個指令利用 | (pipe)傳到sed 目錄 sed基礎介紹 常用option address 除了某個條件以外,其它都符合 p指令 s指令 a、i、c、d指令 sed基礎介紹 sed的指令格式為 sed [option] "/address/ , /address/ command argument [flag] " [inputFile...] 從左到右介紹 [option] 第一個option是常見到的以 - 符號開頭的功能,如 -n、-r、-i,可省略 /address/ address有兩個,代表開始行數和結尾行數               只有一個代表指定的這行,都不輸入代表每行都會執行command               address可以用正規表示法 command 進行的動作,當匹配address後,會進行怎樣的行為,常見的command有s