中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx服務器中的location怎么配置

發布時間:2022-04-29 16:50:10 來源:億速云 閱讀:266 作者:iii 欄目:大數據

這篇“Nginx服務器中的location怎么配置”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Nginx服務器中的location怎么配置”文章吧。

語法
location  [=|~|~*|^~] /uri/  {...}

規則
= : 表示精確的uri匹配(有興趣的同學可以看一下url和uri的區別)
~: 表示區分大小寫的正則匹配
~*:表示不區分大小寫的正則匹配
!~ && !~*:表示區分大小寫不匹配的正則和不區分大小寫的不匹配的正則
/:通用匹配,任何請求都會匹配到

location匹配目標
location匹配測試只使用請求uri的部分,而不使用參數部分。(原因:參數的寫法太多,無法精確匹配)

location匹配順序
多個location配置的前提下,location的匹配順序(未驗證,嘿嘿,google上搜的)
1.首先匹配=
2.其次匹配^~
3.再其次按照配置文件的順序進行正則匹配、
4.最后是交給/進行通用匹配
注意:
當有匹配成功時,立刻停止匹配,按照當前匹配規則處理請求

演示實例

nginx 配置文件,自下到上分為三種層次分明的結構:
 |    http block        the protocol level
 |    server block        the server level
 v    location block        the requested uri

nginx 允許用戶定義 location block ,并指定一個匹配模式(pattern)匹配特定的 uri。除了簡單的字符串(比如文件系統路徑),還允許使用更為復雜的匹配模式(pattern)。
location block 的基本語法形式是:

  location [=|~|~*|^~|@] pattern { ... }

[=|~|~*|^~|@] 被稱作 location modifier ,這會定義 nginx 如何去匹配其后的 pattern ,以及該 pattern 的最基本的屬性(簡單字符串或正則表達式)。

關于 location modifier

1. =

這會完全匹配指定的 pattern ,且這里的 pattern 被限制成簡單的字符串,也就是說這里不能使用正則表達式。
example:

server {
  server_name jb51.net;
  location = /abcd {
  […]
  }
}

匹配情況:
    http://jb51.net/abcd        # 正好完全匹配
    http://jb51.net/abcd        # 如果運行 nginx server 的系統本身對大小寫不敏感,比如 windows ,那么也匹配
    http://jb51.net/abcd?param1?m2    # 忽略查詢串參數(query string arguments),這里就是 /abcd 后面的 ?param1?m2
    http://jb51.net/abcd/    # 不匹配,因為末尾存在反斜杠(trailing slash),nginx 不認為這種情況是完全匹配
    http://jb51.net/abcde    # 不匹配,因為不是完全匹配

2. (none)
可以不寫 location modifier ,nginx 仍然能去匹配 pattern 。這種情況下,匹配那些以指定的 patern 開頭的 uri,注意這里的 uri 只能是普通字符串,不能使用正則表達式。
example:

server {
  server_name website.com;
  location /abcd {
  […]
  }
}

匹配情況:
    http://jb51.net/abcd        # 正好完全匹配
    http://jb51.net/abcd        # 如果運行 nginx server 的系統本身對大小寫不敏感,比如 windows ,那么也匹配
    http://jb51.net/abcd?param1?m2    # 忽略查詢串參數(query string arguments),這里就是 /abcd 后面的 ?param1?m2
    http://jb51.net/abcd/    # 末尾存在反斜杠(trailing slash)也屬于匹配范圍內
    http://jb51.net/abcde    # 仍然匹配,因為 uri 是以 pattern 開頭的

3. ~
這個 location modifier 對大小寫敏感,且 pattern 須是正則表達式

example:
server {
  server_name jb51.net;
  location ~ ^/abcd$ {
  […]
  }
}

匹配情況:
    http://jb51.net/abcd        # 完全匹配
    http://jb51.net/abcd        # 不匹配,~ 對大小寫是敏感的
    http://jb51.net/abcd?param1?m2    # 忽略查詢串參數(query string arguments),這里就是 /abcd 后面的 ?param1?m2
    http://jb51.net/abcd/    # 不匹配,因為末尾存在反斜杠(trailing slash),并不匹配正則表達式 ^/abcd$
    http://jb51.net/abcde    # 不匹配正則表達式 ^/abcd$
注意:對于一些對大小寫不敏感的系統,比如 windows ,~ 和 ~* 都是不起作用的,這主要是操作系統的原因。

4. ~*
與 ~ 類似,但這個 location modifier 不區分大小寫,pattern 須是正則表達式
example:

server {
  server_name website.com;
  location ~* ^/abcd$ {
  […]
  }
}

匹配情況:
    http://jb51.net/abcd        # 完全匹配
    http://jb51.net/abcd        # 匹配,這就是它不區分大小寫的特性
    http://jb51.net/abcd?param1?m2    # 忽略查詢串參數(query string arguments),這里就是 /abcd 后面的 ?param1?m2
    http://jb51.net/abcd/    # 不匹配,因為末尾存在反斜杠(trailing slash),并不匹配正則表達式 ^/abcd$
    http://jb51.net/abcde    # 不匹配正則表達式 ^/abcd$

5. ^~
匹配情況類似 2. (none) 的情況,以指定匹配模式開頭的 uri 被匹配,不同的是,一旦匹配成功,那么 nginx 就停止去尋找其他的 location 塊進行匹配了(與 location 匹配順序有關)

6. @
用于定義一個 location 塊,且該塊不能被外部 client 所訪問,只能被 nginx 內部配置指令所訪問,比如 try_files or error_page

演示實例

Nginx服務器中的location怎么配置

產生的效果如下:
訪問根目錄/,匹配到location /
訪問除hello.php之外的其它php程序,匹配到location ~ \.php$,并且用php5-fpm去運行
訪問hello.php,匹配到location = /hello.php,訪問被重定向到好聯系官網

以上就是關于“Nginx服務器中的location怎么配置”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白河县| 依兰县| 晋州市| 德惠市| 高碑店市| 通化市| 鸡东县| 临汾市| 凌海市| 巩留县| 伽师县| 个旧市| 江西省| 宜兰县| 清新县| 兴隆县| 宜昌市| 喀喇沁旗| 高要市| 治多县| 沈阳市| 新乡市| 长武县| 江华| 太仆寺旗| 齐齐哈尔市| 九寨沟县| 探索| 财经| 乌拉特前旗| 井冈山市| 松滋市| 铅山县| 古田县| 宁海县| 新乐市| 华坪县| 南阳市| 宁城县| 平南县| 牙克石市|