首頁  >  問答  >  主體

關於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:\nginx\nginx-1.12.0/html/img/index.html" is not found
//D:\nginx\nginx-1.12.0是我的安装目录

nginx去html資料夾下面找img資料夾的index.html檔案;
我理解的是,就算去html下面找,那也應該是html/dist/index.html,怎麼都不應該是img啊。

所以我就想是不是應該配成絕對路徑,於是修改成下面,殺掉進程,重新啟動:

//日志
"D:\nginx\nginx-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?

#
阿神阿神2714 天前614

全部回覆(2)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-16 17:09:45

    root是web根目錄,建議使用绝对路径,相對路徑受制於nginx的工作目錄,存在不確定性

    回覆
    0
  • 为情所困

    为情所困2017-05-16 17:09:45

    root就是根目錄唄,用絕對路徑,這樣不會出錯

    回覆
    0
  • 取消回覆