1. 實例

    server{
        location = \\\\ {
            [配置A]
        }
        location / {
            [配置B]
        }
        location = /images/ {
            [配置C]
        }
        location ^~ /static/{
            [配置D]
        }
        localtion ~* \\\\.(gif|jpg|png){
            [配置E]
        }
}

2. location語法規則

語法:

location  = | ~ | ~* | ^~ | @  /url/{       //注意 =、~、~*、^~ 、@是location的匹配規則,”|“表示或者
“
    ......省略其他配置
}

規則說明:

符號 含義

=
字面精準匹配,如果匹配,則跳出匹配過程(不再進行正則匹配)

~
開頭區分大小寫的正則匹配

~*
開頭不區分大小寫的正則匹配

^~
開頭表示uri以某哥常規字符串開頭,理解為匹配url路徑即可

/
通用匹配,在沒有正則表達式匹配時,任何請求都會匹配到

@
不是普通的location匹配,用于location內部重定向的變量

~
開頭區分大小寫的正則匹配

多個location配置的匹配順序:

首先匹配:"="
其次匹配:"^~"
再匹配:文件location書寫順序
最后把所有請求交給通配符("/")

注意:每次匹配成功后,停止匹配,會按照本匹配的location處理請求

按照上面實例進行說明匹配順序:

首先對比第一個location,如果匹配就會停止匹配,并按照配置A進行處理請求:

location = \\\\ {
    [配置A]
}

其次對比第二個location,如果匹配就會停止匹配,并按照配置D進行處理請求:

location ^~ /static/{
        [配置D]
    }

再按照順序依此進行對比,直到找到匹配的才會停止,并按照所匹配的配置*進行處理請求

如果以上無任何匹配項則會選擇通用選項,并按照所匹配的配置B進行處理請求:

location / {
        [配置B]
    }

3. 應用舉例

精準規則(=)

location = / {
    root /var/ww/html/;
}

此規則表示只匹配以默認地址進行訪問的請求,訪問地址:http://NginxIP/

匹配url路徑(^~)

location ^~ /static/ {
    root /var/www/html/static;
}

此規則表示只匹配以" /static/ "開頭的地址進行訪問的請求,訪問地址:https://cache.yisu.com/upload/information/20200214/32/673.jpg | .gif | *.jpg "的文件,訪問地址:https://cache.yisu.com/upload/information/20200214/32/674.jpg

location ~* /Test/ {
    root /var/www/html/;
}

此規則表示匹配url地址中存在Test的訪問請求,不區分大小寫test也可以,訪問地址:http://NginxIP/test/

區分大小寫(~)

location ~ /Test/{
    root /var/www/html/;
}

此規則表示匹配url地址中存在Test的訪問請求,區分大小寫,test是進行匹配的,訪問地址:http://NginxIP/Test/

默認匹配(所有規則都可匹配)

location / {
    root /var/www/html;
}

此規則為默認匹配,他可以匹配所有以默認地址訪問的鏈接,訪問地址:http://NginxIP/login.html

內部跳轉(@)

location @index_error{
    root /var/www/error/
}

此規則表示匹配以 "/index/ "開頭的請求,如果鏈接狀態404,會匹配到這條規則

rewrite規則詳解

nginx的rewrite功能和apache一樣,rewrite的主要功能是實現RUL地址的重定向。Nginx的rewrite功能是由PCRE軟件支持,rewrite模塊即ngx_http_rewrite_module模塊。從某種意義上可以說為了美觀或者搜索引起的友好搜索,提高排名等

1.實例

    server{
        listen 80;
        server_name www.jkyst.xyz jkyst.xyz;
        if($host != \\\'www.jkyst.xyz\\\' ){
            rewrite ^/(.*)$ http://www.jkyst.xyz/$1 permanent;
        }
        location ~.*\\\\.(png|gif|jpg){
            return 403;
        }
    }

2.rewrite語法規則

語法:

    rewrite     regex       replacement     [flag]

rewrite:rewrite重寫的關鍵字不可省略
regex:這里寫的是正則表達式
replacement:這里是重新內容
flag:這里是最后的flag標記

flag標記說明:

flag標記 說明

last
也就是apache里的(L)標記,表示完成rewrite,URL地址不會改變

break
本條規則匹配成功后,會停止匹配,不再匹配后面的規則,URL地址不會改變

redirect
返回302臨時重定向,瀏覽器地址會顯示跳轉后的URL地址

permanent
返回301永久重定向,瀏覽器地址欄顯示跳轉后的URL地址,Nginx返回response狀態碼301

相關符號說明:

符號 說明

*
代表前面0或者多個字符

代表前面1或者多個字符

?
代表前面0或1個字符

^
代表字符串的開始位置

$
代表字符串結束位置

$n
代表字符串結束第n個參數

.
通配符,代表任何字符

3.應用實例

域名跳轉到同一域名

server{
    listen 80;
    server_name www.jkyst.xyz jkyst.xyz abc.jkyst.xyz;
    if($host != \\\'www.jkyst.xyz\\\'){
        rewrite ^/(.*)$ http://www,jkyst.xyz/$1 permanent;
    }
}

當訪問 "abc.jkyst.xyz" 時會自動跳轉到 "www.jkyst.xyz",這里出現 "if" 語句用于判斷,判斷結果為true則執行語句內部的 rewrite重寫

當文件不存在時重定向到指定文件

server{
    listen 80;
    server_name www.jkyst.xyz;
    if(!-e $request_filename){
        rewrite  ^/test/(.*)$ http://www.jkyst.xyz/test1/$1 permanent;
    }
}

當訪問 "test" 目錄下的文件或目錄不存在時,則跳轉到 "test1"下面的此文件或者目錄,跳轉后會將URL進行轉換

server{
    listen 80;
    server_name www.jkyst.xyz;
    if(!-e $request_filename){
        rewrite ^/test/(.*)$ index.html last;
    }
}

表示當訪問 "test" 目錄下的文件或目錄不存在時,則重定向到 "index.html"文件,跳轉后URl不會進行轉換

server{
        listen 80;
        server_name www.jkyst.xyz;
        if(!-e $request_filename){
            rewrite ^/test/([0-9a-z] )/([0-9a-z] )/(.*)$ http://www.jkyst.xyz/test/$1$2$3 permanent;
        }
}

目錄切換,表示將原目錄轉換成其他目錄,【0-9a-z】表示轉換后目錄名稱

禁止訪問.sh后綴的文件

server{
......其他配置
location ~.*\\\\.(sh)${
    return 405;
}
}

表示當訪問 "*.sh"的文件就會返回405錯誤

匹配用戶瀏覽器代理信息

server{
    listen 80;
    server_name www.jkyst.xyz;
    if ( $http_user_agent ~* (Android)|(iPhone)){
        rewrite ^/test/(.*)$ http://www.jkyst.xyz/test/$1  permanent;
    }
}

表示當匹配到瀏覽代理為Android和iPhone時進行重定向 "test"目錄下的文件,改變訪問的地址

禁止htaccess

server{
    location ~//.ht {
         deny all;
       }
   }

4.文件目錄匹配

參數 介紹

-f
判斷文件是否存在 返回值true為存在

!-f
判斷文件是否存在 返回值false為不存在

-d
判斷目錄是否存在 返回值true為存在

!-d
判斷目錄是否存在 返回值true為不存在

-e
判斷文件或目錄是否存在 返回值true為存在

!-e
判斷文件或目錄是否存在 返回值true為不存在

-x
判斷文件是否可執行 返回值true為可執行

!-x
判斷文件是否可執行 返回值true為不可執行

舉例說明:

    server{
        listen 80;
        server_name www.jkyst.xyz;
        if(!-e $request_filename){
            rewrite  ^/test/(.*)$ http://www.jkyst.xyz/test1/$1 permanent;
        }
    }

判斷文件或目錄是否存在

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » nginx location匹配及rewrite規則

登錄

找回密碼

注冊

主站蜘蛛池模板: 亚洲精品日本一区二区| 2020国产成人精品视频| 免费大黄网站在线观看| 久久www免费人成一看片| 久久人人97超碰爱香蕉| 麻栗坡县| 成人无码一区二区三区网站| 97久久精品人人澡人人爽| 色婷婷综合久久久久中文一区二区| 又爽又黄又无遮挡的激情视频| 日韩人妻av一区二区三区| 性色在线视频精品| a级亚洲片精品久久久久久久| 国产乱人伦真实精品视频| 精品国产自线午夜福利| 日本中文一区二区三区亚洲| 国产高清在线精品一区不卡| 欧美成人www免费全部网站| 久久国产精品老人性| 亚洲欧洲日产国无高清码图片| 国产精品人妻熟女男人的天堂| 高清自拍亚洲精品二区| av偷拍亚洲一区二区三区| 午夜福利激情一区二区三区| 中文字幕亚洲综合久久2020| 日韩人妻无码一区二区三区99| 亚洲狼人久久伊人久久伊| 国偷自产一区二区三区在线视频| 乱人伦人妻系列| 亚洲精品漫画一二三区| 国产乱码日韩亚洲精品成人| 亚洲性色AV一区二区三区| 五指山市| 精品无码久久久久久尤物| 亚洲福利精品一区二区三区| 办公室强奷漂亮少妇视频| 久久人人97超碰精品| 67194熟妇在线直接进入| 无码人妻丰满熟妇区96| 亚洲激情国产一区二区三区| 无套内谢少妇一二三四|