亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

nginx跳轉配置的方式有哪些

發布時間:2022-07-06 13:52:27 來源:億速云 閱讀:189 作者:iii 欄目:開發技術

這篇文章主要介紹了nginx跳轉配置的方式有哪些的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇nginx跳轉配置的方式有哪些文章都會有所收獲,下面我們一起來看看吧。

    一、配置server對應的域名

    server name 為虛擬服務器的識別路徑。因此不同的域名會通過請求頭中的HOST字段,匹配到特定的server塊,轉發到對應的應用服務器中去。server_name匹配規則:后面可以跟多個域名,第1個是主域名

    1.1、精確匹配

    如下nginx配置

            listen       8080;
            server_name  test1.com;
            location / {
                return 200 "I am test1!\n";
            }
        }
        server {
            listen       8080;
            server_name  my.test.com;
            location / {
                return 200 "I am mytest!\n";
            }
        }

    請求結果

    curl http://my.test.com:8080 返回:I am mytest!
    curl http://test1.com:8080 返回:I am test1!

    1.2、正則表達式

    以*通配符開始的最長字符串,如下示例

    server {
            listen       8080;
            server_name  test1.*;
            location / {
                return 200 "I am test1!\n";
            }
        }

    以*通配符結束的最長字符串

            listen       8080;
            server_name  *.test.com;
            location / {
                return 200 "I am mytest!\n";
            }
        }

    通配符名字只可以在名字的起始處或結尾處包含一個星號,并且星號與其他字符之間用點分隔。所以,“my..com“都是非法的。

    例如 :server_name my..com;

    報以下錯誤:

    nginx: [emerg] invalid server name or wildcard "my.*.com" on 0.0.0.0:8080

    匹配正則表達式

    server {
            listen     8080;
            server_name  ~^my(?<serno>.+).mydomain.com$;
            location / {
                return 200 $serno;
            }
        }

    解釋說明

    • ~: 表示大小寫敏感的正則;

    • ^:匹配字符串的開始;

    • {.+}:換行符以外的任意自讀重復一次活更多次;

    • (): 分組與取值;

    • :表示轉義;

    • serno:設置提取的變量;

    • $:匹配字符串的結束;

    請求結果

    curl http://my02.mydomain.com:8080 返回:02% 
    curl http://my03.mydomain.com:8080 返回:03%

    server_name的配置順序是怎樣的呢?

    按照如下順序匹配:

    • 匹配順序->

    • ->精確匹配

    • ->*在前的域名

    • ->*在后的域名

    • ->按文件中的順序匹配

    • ->default server:第一個,listen指定default

    二、配置location

    2.1、Location 匹配規則:僅匹配URI,忽略參數

    location [=|~|~*|^~] /uri/ { … }

    匹配的正則符號如下:

    • = 嚴格匹配。如果請求匹配這個location,那么將停止搜索并立即處理此請求

    • ~ 區分大小寫匹配(可用正則表達式)

    • ~* 不區分大小寫匹配(可用正則表達式)

    • !~ 區分大小寫不匹配

    • !~* 不區分大小寫不匹配

    • ^~ 如果把這個前綴用于一個常規字符串,那么告訴nginx 如果路徑匹配那么不測試正則表達式

    2.2、舉例

    1、匹配任意請求
    location [=|~|~*|^~] /uri/ { … }
    
    2、不區分大小寫匹配以js、php結尾的請求
    location ~* .(js|php)$ { … }
    
    3、區分大小寫匹配以.txt結尾的請求
    location ~ ^.+\.txt$

    2.3、匹配順序如下圖

    nginx跳轉配置的方式有哪些

    按照上面的規則配置了如下location

    location = /documents {
        return 200 'configuration A'
    }
    location /documents {
        return 200 'configuration B'
    }
    location /documents/txt1 {
        return 200 'configuration C'
    }
    location ^~ /documents/ {
        return 200 'configuration D'
    }
    location ~* /documents/(\w+)$ {
        return 200 'configuration E'
    }
    location ~ /documents/$ {
        return 200 'configuration F'
    }
    • curl http://test1.com:8080/documents,精確匹配返回 configuration A

    • curl http://test1.com:8080/documents/ ^~匹配上后不在匹配,返回 configuration D

    • curl http://test1.com:8080/documents/txt1 走到了正則匹配,不會走到/documents/txt1(正則沒走完) 返回configuration E

    • curl http://test1.com:8080/documents/txt1/,返回configuration C,因為正則都不匹配

    2.4、如何debug正則呢?

    編譯的時候加上 --with-debug選項,例如 ./configure --with-debug

    conf文件加上要debug的host,debug_connection對應要debug的連接。

    events {
        worker_connections  1024;
        debug_connection  192.168.1.3;
        debug_connection  127.0.0.1;
    }

    error.log查看debug日志,圖中test location就是正則匹配的過程

    nginx跳轉配置的方式有哪些

    三、配置rewrite

    語法如下:

       指令語法:rewrite regex replacement[flag];
      默認值:none
      應用位置:server、location、if
      rewrite是實現URL重定向的重要指令,他根據regex(正則表達式)來匹配內容跳轉到replacement,結尾是flag標記.

    flag標記說明
    last本條規則匹配完成后繼續向下匹配新的location URI規則
    break本條規則匹配完成后終止,不在匹配任務規則
    redirect返回302臨時重定向
    permanent返回301永久重定向

    3.1、重定向

    return三種code,code url和url。

    返回狀態碼:444表示關閉連接 301表示http1。0中永久重定向,302表示臨時重定向,進制緩存。http1.1后,303表示臨時重定向,允許改變方法,進制緩存,307表示臨時重定向,不允許改變方法,禁止被緩存,308表示永久重定向,不允許改變方法。

    返回code

    location / {
        return 301 https://www.xxxx.com$request_uri;
    }

    通過$request_uri變量匹配所有的URI。

    rewrite ^ https://www.xxxx.com$request_uri? permanent;

    通過正則匹配所有的URI后再去掉開頭第一個/(反斜線)。

    rewrite ^/(.*)$ https://www.xxxx.com/$1;

    與if指令結合

    server {
            listen       80;
            server_name  test1.net test2.net;
            if ($host != 'test1.net' ) {
                    rewrite ^/(.*)$ http://www.baidu.net/$1 permanent;
            }
    }

    3.2、如何查看rewrite日志

    打開日志開關rewrite_log on;

    可以配置到http,server,location和if上下文中

    示例:curl http://test1.com:8080/first/2.txt

    location /first {
            rewrite_log on;
            rewrite /first(.*) /second$1 last;
          }

    效果圖如下

    nginx跳轉配置的方式有哪些

    四、配置 proxy

    對上游服務使用http/https協議進行反向代理。proxy_pass后面跟url,可以仿造location,if in location和limit_except上下文中。 這個功能是默認編譯到nginx中的。本文重點討論http proxy。

    url參數規則

    • url必須以http或者https開頭,接下來是域名、ip、unix socket或者upstream名字,都可以就端口。后面是可選的uri

    http示例

    proxy_pass http://localhost:8000/uri/;

    UNIX域套接字路徑來定義示例

    proxy_pass http://unix:/tmp/backend.socket:/uri/;

    url中是否攜帶uri,結果也不一樣,如果在proxy_pass后面的url加/,相當于是絕對根路徑,則nginx不會把location中匹配的路徑部分代理走;如果沒有/,則會把匹配的路徑部分給代理走。

    目錄結構如下

    ├── first

    │   └── index.html

    ├── index.html

    └── second

        └── index.html

    nginx配置如下

    server {
            listen       8081;
            server_name  my.test.com;
        }
        server {
            listen       8082;
            # 第一種情況
            location  /first {
                proxy_pass http://my.test.com:8081;
                proxy_set_header Host   $host;
                proxy_set_header X-Real-IP      $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            # 第二種情況
            location  /first {
                proxy_pass http://my.test.com:8081/;
                proxy_set_header Host   $host;
                proxy_set_header X-Real-IP      $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }

    不帶/,然后 curl http://127.0.0.1:8082/first/index.html 返回index html

    帶/,然后 curl http://127.0.0.1:8082/first/index.html 返回first index

    • Url參數中可以攜帶變量proxy_pass http://$host$uri;

    • 可以配合rewrite break語句

    location /nameb/ { 
        rewrite /nameb/([^/]+) /test?nameb=$1 break;
        proxy_pass http://127.0.0.1:8801/; 
    }

    關于“nginx跳轉配置的方式有哪些”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“nginx跳轉配置的方式有哪些”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    临朐县| 新营市| 远安县| 枞阳县| 合水县| 江口县| 石河子市| 昭通市| 平泉县| 察哈| 白朗县| 安庆市| 连江县| 拉孜县| 德州市| 外汇| 龙门县| 喀喇沁旗| 卢氏县| 尼勒克县| 黄骅市| 南平市| 利川市| 正宁县| 江华| 盐山县| 东丰县| 永修县| 遂溪县| 汤阴县| 岑溪市| 屯昌县| 姚安县| 色达县| 南漳县| 准格尔旗| 鄂伦春自治旗| 仙游县| 遵化市| 洛隆县| 太仓市|