nginx關於root與alias的區別

來源:互聯網
上載者:User
這篇文章主要介紹了關於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!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.