雖然我是一位前端工程師,但是因為跟主管自告奮勇(?)接觸新東西,所以就踏入了Nginx世(ㄉ一ˋ)界(ㄩˋ)。雖然很多時候,都只是單純地改現有的設定檔案,但是在改的時候,還是得了解現有策略,避免改到不該改的地方,改寫當然也需要對設定方式有一定的了解,又加上這禮拜終於有些東西有點搞懂了,所以就想說來寫一篇這個吧!
這裡就不詳細介紹Nginx是什麼,單純記錄自己在接觸Nginx的過程中,常碰到但又常搞混的一些我自己認為必懂得Nginx設定內容。
root
當path匹配到對應的location時,會前往「root」+「path」取得要拿的資源。
範例:
location /resource {
root /data-disck/static/;
}
request URL為https://www.test.com/resource/index.html時
實際上會前往/data-disk/static/resource/裡面尋找index.html。
alias
當path匹配到對應的location時,會前往「把匹配到的path替換成alias設定的內容」+「被匹被到的path外,剩下的path內容」取得要拿的資源。
範例:
location /resource {
alias /data-disk/static;
}
request URL為https://www.test.com/resource/index.html時
實際上會前往/data-disk/static/尋找index.html。
index
用來設定默認要取得哪個檔案,如果匹配到的path已經有明確指定要取得哪個檔案,就不會去拿默認要取得的檔案。
範例:
location /resource {
root/data-disk/static;
index index.html;
}
request URL為https://www.test.com/resource/時:
會前往data-disk/static/resource尋找被默認要取得的index.html
request URL為https://www.test.com/resource/test.txt時:
因為已經有明確指出要拿到test.txt檔案,所以會前往/data-disk/static/resource尋找被默認要取得的test.txt
rewrite
會重新定向指定的路徑,並前往「root」+「重新定向的path」取得要拿的資源。
使用上主要會有三個參數,寫法會是rewrite 「匹配規則」+ 「重新定向到哪裡」+「指令(非必要參數)」。
範例:
location ~* ^/(.*)/content/(.*) {
root/data-disk/static;
rewrite (?i)^/(.*)/content/(.*)$ /$2;
}
request URL為https://www.test.com/resource/content/newfile時:
會匹配到這個location,並且將"/resource/content/newfile"這個path重新定向為"/data-disk/static/newfile"拿資源。$2的部分,是指第一個參數中,被匹配到的第二的部分,也就是匹配規則中的,第二的(.*)。如果是$1,就是第一個部分。
指令部分
主要有四種指令可以使用
last:rewrite後,會重新匹配location,用被rewrite後的path重新匹配。
break:rewrite後,不會再重新執行rewrite,但是會繼續執行location中剩下的非rewrite的設定。
redirect:會返回302臨時重新定向。
permanent:會返回301永久重新定向。
try_files
會依序查找指定的檔案,找不到檔案會進行內部重新定向到最後一個參數。搭配root使用的話,會去前往「root」 + 「try_files參數路徑」查找檔案。
範例:
location ~* ^/content/(.*) {
root/data-disk/static;
try_files /index.html /test.html;
}
匹配到這個location時,會先去/data-disk/static/找index.html,沒有的話,會接著再去找test.html
以上就是目前比較常碰到且容易搞混的Nginx設定內容。
雖然前端大多不太會碰到Nginx這種和伺服器有關的東西,但其實在接觸的過程中,也讓非本科的我,漸漸對於「網路」這一塊多了一點點了解,而不單單只是知道切版、接API。老實說,雖然過程中充滿痛苦,但還是有不少收穫。
好啦 ,打完收工!
- Jul 31 Sun 2022 23:00
【前端學Nginx】Nginx常用設定之隨意寫筆記
文章標籤
全站熱搜
留言列表
發表留言