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