日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

詳解nginx?location指令_nginx

作者:小亮的BLOG ? 更新時(shí)間: 2022-03-30 編程語言

location 介紹 location是Nginx中的塊級(jí)指令(block directive),,location指令的功能是用來匹配不同的url請(qǐng)求,進(jìn)而對(duì)請(qǐng)求做不同的處理和響應(yīng),這其中較難理解的是多個(gè)location的匹配順序,本文會(huì)作為重點(diǎn)來解釋和說明。 開始之前先明確一些約定,我們輸入的網(wǎng)址叫做請(qǐng)求URI,nginx用請(qǐng)求URI與location中配置的URI做匹配。

Nginx的HTTP配置主要包括三個(gè)區(qū)塊,結(jié)構(gòu)如下:
http { //這個(gè)是協(xié)議級(jí)別
  include mime.types;
  default_type application/octet-stream;
  keepalive_timeout 65;
  gzip on;
    server { //這個(gè)是服務(wù)器級(jí)別
      listen 80;
      server_name localhost;
        location / { //這個(gè)是請(qǐng)求級(jí)別
          root html;
          index index.html index.htm;
        }
      }
}

location區(qū)段

通過指定模式來與客戶端請(qǐng)求的URI相匹配,基本語法如下:location [=|~|~*|^~|@] pattern{……}

1、沒有修飾符 表示:必須以指定模式開始,如:

server {
  server_name baidu.com;
  location /abc {
    ……
  }
}
那么,如下是對(duì)的:http://baidu.com/abchttp://baidu.com/abc?p1http://baidu.com/abc/http://baidu.com/abcde

那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu.com/abc?p1
http://baidu.com/abc/
http://baidu.com/abcde

2、=表示:必須與指定的模式精確匹配

server {
server_name sish
  location = /abc {
    ……
  }
}
那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu.com/abc?p1
如下是錯(cuò)的:
http://baidu.com/abc/
http://baidu.com/abcde

3、~ 表示:指定的正則表達(dá)式要區(qū)分大小寫

server {
server_name baidu.com;
  location ~ ^/abc$ {
    ……
  }
}
那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu.com/abc?p1=11&p2=22
如下是錯(cuò)的:
http://baidu.com/ABC
http://baidu.com/abc/
http://baidu.com/abcde

4、~* 表示:指定的正則表達(dá)式不區(qū)分大小寫

server {
server_name baidu.com;
location ~* ^/abc$ {
    ……
  }
}
那么,如下是對(duì)的:
http://baidu.com/abc
http://baidu..com/ABC
http://baidu..com/abc?p1=11&p2=22
如下是錯(cuò)的:
http://baidu..com/abc/
http://baidu..com/abcde

5、^~ 類似于無修飾符的行為,也是以指定模式開始,不同的是,如果模式匹配,
那么就停止搜索其他模式了。
6、@ :定義命名location區(qū)段,這些區(qū)段客戶段不能訪問,只可以由內(nèi)部產(chǎn)生的請(qǐng)
求來訪問,如try_files或error_page等

查找順序和優(yōu)先級(jí)
1:帶有“=“的精確匹配優(yōu)先
2:沒有修飾符的精確匹配
3:正則表達(dá)式按照他們?cè)谂渲梦募卸x的順序
4:帶有“^~”修飾符的,開頭匹配
5:帶有“~” 或“~*” 修飾符的,如果正則表達(dá)式與URI匹配
6:沒有修飾符的,如果指定字符串與URI開頭匹配

Location區(qū)段匹配示例location = / {
  # 只匹配 / 的查詢.
  [ configuration A ]
}
location / {
  # 匹配任何以 / 開始的查詢,但是正則表達(dá)式與一些較長(zhǎng)的字符串將被首先匹配。
  [ configuration B ]
}
location ^~ /images/ {
  # 匹配任何以 /images/ 開始的查詢并且停止搜索,不檢查正則表達(dá)式。
  [ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配任何以gif, jpg, or jpeg結(jié)尾的文件,但是所有 /images/ 目錄的請(qǐng)求將在Configuration C中處
  理。
  [ configuration D ]
} 各
請(qǐng)求的處理如下例:
■/ → configuration A
■/documents/document.html → configuration B
■/images/1.gif → configuration C
■/documents/1.jpg → configuration D

root 、alias指令區(qū)別

location /img/ {
    alias /var/www/image/;
}

#若按照上述配置的話,則訪問/img/目錄里面的文件時(shí),ningx會(huì)自動(dòng)去/var/www/image/目錄找文件

location /img/ {
    root /var/www/image;
}

alias是一個(gè)目錄別名的定義,root則是最上層目錄的定義。

還有一個(gè)重要的區(qū)別是alias后面必須要用“/”結(jié)束,否則會(huì)找不到文件的。。。而root則可有可無~~

原文鏈接:https://www.cnblogs.com/xiaoliangup/p/9175932.html

欄目分類
最近更新