首頁 >後端開發 >php教程 >nginx關於root與alias的差別

nginx關於root與alias的差別

不言
不言原創
2018-07-07 15:48:242733瀏覽

這篇文章主要介紹了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指定的位置

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

使用XHProf分析PHP效能瓶頸的方法二

以上是nginx關於root與alias的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn