<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    Nginx 的 location 指令,允許對不同的 URI 進行不同的配置,既可以是字符串,也可以是正則表達式。使用正則表達式,須使用以下前綴:
            (1) ~*, 表示不區分大小寫的匹配。
            (2) ~, 表示區分大小寫的匹配。

            對于非正則的匹配,即字符串匹配,有如下前綴:
            (1) ^~, 表示匹配到字符串后,終止正則匹配。
            (2) =, 表示精確匹配。
            (3) @, 當然,這個也算不上字符串匹配。如果可以,你也可以將其理解成是正則匹配。它是一個命名標記,這種 location 不會用于正常的請求,它們通常只用于處理內部的重定向。

            在匹配過程中,Nginx 將首先匹配字符串,然后匹配正則表達式。匹配到第一個正則表達式后,會停止搜索。如果匹配到正則表達式,則使用正則表達式的搜索結果,如果沒有匹配到正則表達式,則使用字符串的搜索結果。

            上面這段話的意思是說,有一個字符串和正則表達式均能匹配上,那么會使用正則表達式的搜索結果。這里,我們可以使用前綴"^~" 來禁止匹配到字符串后,繼續檢查正則表達式。匹配到 URI 后,將停止搜索。

            使用前綴 "=" 可以進行精確的 URI 匹配,如果找到匹配的 URI,則停止搜索。"location = /" 只能匹配到 "/",而 "/test.html" 則不能被匹配。

            正則表達式的匹配,按照它們在配置文件中的順序進行,寫在前面的優先。

            另外,前綴 "@" 是一個命名標記,這種 location 不會用于正常的請求,它們通常只用于處理內部的重定向(例如:error_page, try_files)。

            最后總結一下匹配的過程:
            (1) 前綴 "=" 先進行匹配,如果找到了,終止搜索。
            (2) 對所有其它 location 進行非正則的匹配,找到最精確匹配(對于 /blog/admin/ 這個 URI, location /blog 要比 location / 長,因此 location /blog 要比 location / 要精確)的那個。如果找到的這個是帶"^~" 前綴的,則終止搜索并直接返回找到的這個,否則開始正則查找。會不會出現所有的非正則匹配都無法匹配到 URI 呢,當然,你若不定義一個 location /,這種情況的確會發生,沒關系啊,它會進行正則查找的。
            (3) 正則查找,按照我們配置文件中配置的 location 順序進行查找。

            (4) 如果正則查找匹配成功,則使用此正則匹配的 location,否則,使用第二步查找的結果。如果『否則』發生了,同時,第二步中的粗體字部分的假設的情況也發生了,怎么辦?404 會等著你的。


    參考:nginx location的管理以及查找


    例子:

    location = / {
    # 只匹配 / 查詢。
    [ configuration A ]
    }

    location / {
    # 匹配任何查詢,因為所有請求都已 / 開頭。但是正則表達式規則和長的塊規則將被優先和查詢匹配。
    [ configuration B ]
    }

    location ^~ /images/ {
    # 匹配任何已 /images/ 開頭的任何查詢并且停止搜索。任何正則表達式將不會被測試。
    [ configuration C ]
    }

    location ~* \.(gif|jpg|jpeg)$ {
    # 匹配任何已 gif、jpg 或 jpeg 結尾的請求。然而所有 /images/ 目錄的請求將使用 Configuration C。
    [ configuration D ]
    }

    例子請求:

    1, /   ->   精確匹配到第1個location,匹配停止,使用configuration A
    2,/some/other/url    ->  首先前綴部分字符串匹配到了第2個location,然后進行正則匹配,顯然沒有匹配上,則使用第2個location的配置configurationB
    3,/images /1.jpg  ->  首先前綴部分字符串匹配到了第2個location,但是接著對第3個location也前綴匹配上了,而且這時已經是配置文件里面對這個url的最大字 符串匹配了,并且location帶有 "^~" 前綴,則不再進行正則匹配,最終使用configuration C
    4,/some/other/path/to/1.jpg  -> 首先前綴部分同樣字符串匹配到了第2個location,然后進行正則匹配,這時正則匹配成功,則使用congifuration D

    注意:按任意順序定義這4個配置結果將仍然一樣。

    posted on 2012-04-17 19:45 ivaneeo 閱讀(1058) 評論(0)  編輯  收藏 所屬分類: 互聯網
    主站蜘蛛池模板: 一级中文字幕乱码免费| 亚洲毛片αv无线播放一区| 在线免费不卡视频| 白白国产永久免费视频| 亚洲综合色丁香婷婷六月图片 | 337P日本欧洲亚洲大胆精品| 日韩亚洲Av人人夜夜澡人人爽| 国产精品免费AV片在线观看| 日本免费高清一本视频| 亚洲天堂一区二区三区| 久久精品国产亚洲AV无码娇色| 久久久免费精品re6| 亚洲大香伊人蕉在人依线| 性感美女视频免费网站午夜| 亚洲GV天堂GV无码男同 | 国产精品va无码免费麻豆| 亚洲A∨精品一区二区三区下载| 国产高清视频在线免费观看| 黄色a级片免费看| 国偷自产一区二区免费视频| 国产aⅴ无码专区亚洲av| 午夜免费福利视频| 亚洲一区二区三区亚瑟 | 黄网站色在线视频免费观看| 亚洲日韩中文字幕一区| 成年免费a级毛片| 日韩亚洲一区二区三区| 国产成人精品免费午夜app| 亚洲欧美精品午睡沙发| 亚洲人成影院在线观看| 午夜免费福利小电影| 亚洲丰满熟女一区二区哦| 红杏亚洲影院一区二区三区| 99久久免费精品高清特色大片| 中文无码亚洲精品字幕| 国产亚洲?V无码?V男人的天堂 | 国产成年无码久久久免费| 91亚洲精品自在在线观看| 免费一级毛片在级播放| 高清一区二区三区免费视频| 亚洲码和欧洲码一码二码三码|