關于nginx location配置的問題,root到底是什么
問題描述
1、前段時間,學習vue2前后分離項目,demo做好之后,想要本地部署一下(因為沒有linux的機器,只能在win7上模擬部署),但是在學習nginx配置的時候遇到了一個,實在無法理解的問題,nginx的server配置中的root配置,問題是這樣的:按照官方文檔,在win7上啟動了nginx,在瀏覽器中訪問localhost,得到正常的頁面,也就是nginx正常啟動了,然后我開始修改配置。
server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / { root html; index app.html app.htm;}location = /img { root dist; index app.html app.htm;}
在一些博客看到,說root的路徑實際是nginx.exe的相對路徑,于是我新建了一個dist文件夾:][1]和html同級,也按照網上說的匹配優先級,配置了最高的等號,我認為此時如果我訪問http://localhost/img,這個路徑,應該打開的是dist中的app.html這個文件,結果卻報了404,在日志中看到了這句話:
D:nginxnginx-1.12.0/html/img/index.html' is not found//D:nginxnginx-1.12.0是我的安裝目錄
nginx去html文件夾下面找img文件夾的index.html文件;我理解的是,就算去html下面找,那也應該是html/dist/index.html,怎么都不應該是img啊。
所以我就想是不是應該配成絕對路徑,于是修改成下面,殺掉進程,重新啟動:
//日志'D:nginxnginx-1.12.0/html/img/index.html' is not found
還是找這個路徑,感覺我第二個location根本沒匹配的樣子
然后我就去翻官網的指導文檔,看到下面這段:
server { location / {root /data/www; } location /images/ {root /data; }}
然后更頭痛了,官網上的路徑,好像是絕對路徑,可是這個路徑又是怎么來的,在哪新建的,需要配置什么還是需要安裝什么,完全搞不明白這個root了;
其它的正則匹配、優先級、端口、ip以及代理什么的,都能看懂,就是這個root搞不明白怎么回事 .
希望對nginx比較熟的朋友,給我詳細解釋一下這個root到底怎么回事。
1、root路徑怎么回事?2、img配置怎么改,才能訪問dist/app.html?
問題解答
回答1:root是web根目錄,建議使用絕對路徑,相對路徑受制于nginx的工作目錄,存在不確定性
回答2:root就是根目錄唄,用絕對路徑,這樣不會出錯
