nginx與location語法詳解

py魚發表於2018-12-07

Location語法優先順序排列

匹配符 匹配規則 優先順序
=    精確匹配    1
^~    以某個字串開頭    2
~    區分大小寫的正則匹配    3
~*    不區分大小寫的正則匹配    4
!~    區分大小寫不匹配的正則    5
!~*    不區分大小寫不匹配的正則    6
/    通用匹配,任何請求都會匹配到    7

nginx.conf配置檔案例項

server {
    listen 80;
    server_name pythonav.cn;

    #優先順序1,精確匹配,根路徑
    location =/ {
        return 400;
    }

    #優先順序2,以某個字串開頭,以av開頭的,優先匹配這裡,區分大小寫
    location ^~ /av {
       root /data/av/;
    }

    #優先順序3,區分大小寫的正則匹配,匹配/media*****路徑
    location ~ /media {
          alias /data/static/;
    }

    #優先順序4 ,不區分大小寫的正則匹配,所有的****.jpg|gif|png 都走這裡
    location ~* .*\.(jpg|gif|png|js|css)$ {
       root  /data/av/;
        }

    #優先7,通用匹配
    location / {
        return 403;
    }
}

nginx語法之root和alias區別實戰

nginx指定檔案路徑有root和alias兩種方法
區別在方法和作用域:

方法:

root
語法  root  路徑;
預設值 root   html;
配置塊  http{}   server {}   location{}

alias
語法: alias  路徑
配置塊  location{}


root和alias區別在nginx如何解釋location後面的url,這會使得兩者分別以不同的方式講請求對映到伺服器檔案上

root引數是root路徑+location位置

root例項:

    location ^~ /av {
        root /data/av;   注意這裡可有可無結尾的   /
    }
請求url是pythonav.cn/av/index.html時
web伺服器會返回伺服器上的/data/av/av/index.html

root例項2:
location ~* .*\.(jpg|gif|png|js|css)$ {
       root  /data/av/;
}

請求url是pythonav.cn/girl.gif時
web伺服器會返回伺服器上的/data/static/girl.gif




alias例項:
alias引數是使用alias路徑替換location路徑
alias是一個目錄的別名
注意alias必須有 "/"  結束!
alias只能位於location塊中


請求url是pythonav.cn/av/index.html時
web伺服器會返回伺服器上的/data/static/index.html

location ^~ /av {
    alias /data/static/;
}

 

相關文章