在nginx中,我們可以通過location塊與root指令結合的方式,將"url"與"伺服器路徑"建立起對應關係,location塊負責匹配url,root指令負責將匹配到的url與伺服器中某個具體目錄對應起來。
其實,除了root指令,還有另乙個指令也能實現類似的功能,它就是alias指令,root指令和alias指令都能將url和伺服器路徑進行對應,但是,它們之間又存在一些區別。
先從root指令開始,我們先來看乙個root指令的示例,如下:
location
/demo
上例中,location塊匹配的url為/demo
,root指令的路徑為/opt/test
,那麼,根據上述配置,當我們訪問
這個url時,實際上訪問的是伺服器中/opt/test/demo
路徑,因此我們只需要將location中的url新增到root指令對應的路徑後面,即可得到最終的伺服器路徑,具體方法如下圖所示:
1.root指令示例
更改配置檔案:
[
root@server1 conf]#
vimnginx
.conf
48location
/demo
寫入測試頁面:
[
root@server1 conf]#
mkdir
/opt
/test
/demo-p[
root@server1 conf]#
cd/opt/
test
/demo/[
root@server1 demo]#
vimindex
.html
[root@server1 demo]#
catindex
.html
/opt
/test
/demo
/
[
root@server1 demo]#
nginx
-tnginx:
theconfiguration
file
/usr
/local
/nginx
/conf
/nginx
.conf
syntax
isok
nginx:
configuration
file
/usr
/local
/nginx
/conf
/nginx
.conf
test
issuccessful
[root@server1 demo]#
nginx
-sreload
使用瀏覽器訪問
:
可以看到,當我們訪問/demo/
時,訪問的其實就是/opt/test/demo/index.html
。
除了root指令,alias
指令也能將url與伺服器路徑進行關聯,如下:
location
/demo1
alias指令對應的值也是乙個路徑,當alias指令與location塊結合時,當我們訪問/demo1/1.jpg
時,其實就是在訪問伺服器的/opt/test/1.jpg
,也就是說,當我們使用alias
時,location的url是與alias的路徑完全對等的。
因此,root指令和alias指令的區別就很明顯了:
root指令會將location塊的"url路徑"帶入到"root指令路徑"中,將帶入後的路徑作為"最終路徑",使用"最終路徑"與url建立對應關係。
alias指令則直接將location塊的"url路徑"與"alias指令路徑"建立對應關係。
其實,除了上述區別,alias指令和root指令能夠處於的上下文位置也不同,檢視nginx官方手冊(,可以看到alias指令和root指令的語法說明如下:
上述官方文當可以看出,alias指令只能在location塊中使用,而root指令則不然。1.alias示例
使用瀏覽器訪問/1.jpg
:
/1.jpg
即相當於訪問nginx伺服器中的/opt/test/1.jpg
Nginx之alias和root指令
1 alias指定的目錄是準確的,即location匹配訪問的path目錄下的檔案直接是在alias目錄下查詢的 2 root指定的目錄是location匹配訪問的path目錄的上一級目錄,這個path目錄一定要是真實存在root指定目錄下的 3 使用alias標籤的目錄塊中不能使用rewrite的...
nginx配置指令root和alias的區別
在nginx中,我們可以通過location塊與root指令結合的方式,將 url 與 伺服器路徑 建立起對應關係,location 塊負責匹配url,root指令負責將匹配到的uri與伺服器中某個具體目錄對應起來 其實,除了root指令,還有另外乙個指令也能實現類似的功能,它就是alias指令,r...
nginx的root和alias指令的區別
nginx配置下有兩個指定目錄的執行,root和alias location img 若按照上述配置的話,則訪問 img 目錄裡面的檔案時,ningx會自動去 var www image 目錄找檔案 location img 若按照這種配置的話,則訪問 img 目錄下的檔案時,nginx會去 var...