Nginx location配置解析

1.語法規則

location [=|~|~*|^~]/uri/{...}複製代碼
  • = 表示精確匹配,這個優先級最高的
  • ^~ 表示uri以某個常規字符串開頭,理解爲匹配 url路徑便可,Nginx不對url作編碼,所以請求爲/static/80%/aa,能夠被規則^~/static/ /aa(注意中間是空格)
  • ~ 表示區分大小寫的正則匹配、
  • ~* 表示不區分大小寫的正則匹配
  • !~ 表示區分大小寫不正則匹配
  • !~*表示不區分大小寫不正則匹配
  • / 表示通用匹配,任何請求都會匹配到,默認匹配
    其中經常使用正則
  • . : 匹配除換行符之外的任意字符
  • ? : 重複0次或1次
  • + : 重複1次或更屢次
  • * : 重複0次或更屢次
  • \d :匹配數字
  • ^ : 匹配字符串的開始
  • $ : 匹配字符串的介紹
  • {n} : 重複n次
  • {n,} : 重複n次或更屢次
  • [c] : 匹配單個字符c
  • [a-z] : 匹配a-z小寫字母的任意一個

    2.語法優先級別

    優先級:= > ^~
    首先匹配 = ,其次匹配 ^~,其次是按文件中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,中止匹配,按當前匹配規則請求。

    3.定義匹配規則

    (注:須要安裝echo模塊才行,才能使用echo)
    location / {
      echo '/';
    }複製代碼
    location = /{
      echo '=/';
    }複製代碼
    location = /nginx{
      echo '=/nginx';
    }複製代碼
    location ~ \.(gif|jpg|png|js|css) {
      echo 'name-gif/jpg/png';
    }複製代碼
    location ~* \.png$ {
      echo 'all-png';
    }複製代碼
    location ^~ /static/ {
      echo 'static';
    }複製代碼

    4.訪問測試

  • 訪問a.chen.com/,匹配到「=/」
    #curl http://a.chen.com/
    =/複製代碼
  • 訪問a.chen.com/nginx,徹底匹配到…
    #curl http://a.chen.com/nginx
    =/nginx複製代碼
  • 訪問a.chen.com/xxx/xxx.PNG… .png$,由於大寫。因此沒有匹配到‘~.(gif|jpg|png|js|css)’,由於 ~ 區分大小寫 」
    #curl http://a.chen.com/xxx/1.PNG
    all-png複製代碼
  • 訪問a.chen.com/static/xxx.… ^~ /static/ 由於有 ^~ 中止往下匹配了」
    #curl http://a.chen.com/static/1.PNG
    static複製代碼

    5.經常使用的靜態資源匹配規則

    5.1.樣式和JS

    location ~* .*\.(js|css)?${
      expires 7d;//7天過時
      access_log off;//不保存日誌
    }複製代碼

    5.5.圖片圖標等

    location ~* .*\.(jpg|png|gif|jpeg|bmp|ico)?${
      expires 7d;//7天過時
      access_log off;//不保存日誌
    }複製代碼

    5.6.資源數據

    location ~* .*\.(zip|rar|exe|msi|iso|gho|mp3|mp4|rmvb|wma|wmv|rm)?${
      deny all;//禁止這些文件的下載
    }複製代碼
相關文章
相關標籤/搜索