這篇文章主要介紹了關於nginx關於root與alias的區別,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
結論
配置demo:
location xxx { root yyy}
瀏覽器訪問 xxx,實際訪問的是 yyy/xxx
瀏覽器訪問 xxx/abc.html,實際訪問的是 yyy/xxx/abc.html
瀏覽器訪問 xxx/ccc/abc.html,實際訪問的是 yyy/xxx/ccc/abc.html
結論: root屬性,會把root的值(這裡是yyy)加入到訪問路徑(locaition)之前
配置demo:
locaiton xxx { # alias必須以 / 結束,否則無效 alias yyy/ }
瀏覽器訪問 xxx,實際訪問的是 yyy
瀏覽器訪問 xxx/abc.html,實際訪問的是 yyy/abc.html
瀏覽器訪問 xxx/ccc/abc.html,實際訪問的是 yyy/ccc/abc.html
結論:alias屬性,會把alias的值(這裡是yyy)替代訪問路徑匹配的部分(這裡是xxx)
樣本
nginx的目錄結構如下:
nginx/ -html/ -index.html -logs/ - access.log -conf/ -nginx.conf
1) 這種配置,http://localhost:8086/access.log,能看到 nginx/logs/access.log,但就別指望能訪問 html目錄下的文檔了
server { listen 8086; server_name localhost; location / { root logs; }}
2) 這種配置,訪問 http://localhost:8086/log/access.log,能看到 nginx/logs/access.log;
訪問 http://localhost:8086/, 能看到 nginx/html/index.html
server { listen 8086; server_name localhost; location / { root html; index index.html index.htm; } # 配置成 location /log/ 或 location /log 都可以 location /log/ { # 不能寫成logs, 必須已 / 結束 alias logs/; # 以下配置沒用也可以,只是方便你輸入 localhost:8086/log/ 後能,看到nginx/logs/目錄下的所有檔案 autoindex on; }}
3) 這種配置,訪問 http://localhost:8086/logs/access.log,能看到 nginx/logs/access.log;
訪問 http://localhost:8086/, 能看到 nginx/html/index.html
server { listen 8086; server_name localhost; # http://localhost:8086/ 訪問的是 # nginx/html/ (然後會自動顯示 index.html 或 index.htm,如果存在這兩個檔案之一) # 囉嗦的注釋: nginx/html(html是root的值)/(/是location的值) location / { root html; index index.html index.htm; } # http://localhost:8086/logs/ 訪問的是 # nginx/./logs/ # .是root的值,logs是location的值 # 請與第4種錯誤配置進行比較,深入理解root屬性 location /logs/ { # 寫成./也可以 root .; }}
4) 錯誤的配置
server { listen 8086; server_name localhost; location / { root html; index index.html index.htm; } # 這樣子配置是錯的, 請與第三種配置比較一下 # 關鍵點:root屬性會把root的值加入到最終路徑之前 # 即: http://localhost:8086/logs/access.log訪問的是: # nginx/logs/logs/access.log # 因為: nginx/logs(root的值)/logs(locaition的值)/access.log, location /logs/ { root /logs/; }}
節選:https://www.cnblogs.com/zhang... 這段話:
root屬性指定的值是要加入到最終路徑的,所以訪問的位置變成了 root的值/locaiton的值。而我不想把訪問的URI加入到路徑中。所以就需要使用alias屬性,其會拋棄URI,直接存取alias指定的位置
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!