nginxのlocation命令の詳細

2290 ワード

前にnginx.confのファイル構造を紹介しましたが、大体トップレベルの命令と各級の命令を紹介しました.今日はhttpモジュールの中のサブモジュールserverの命令locationを紹介します.この命令は要求ルーティング転送規則に直接影響し、重要です.
locationマッチングルールの説明
サーバモジュールの下では、異なる要求URIに一致する複数のlocationモジュールを設定して、異なるニーズを満たすことができます.最も一般的な一致記号は、主に(=、~、~*、^~、@および符号なし一致)を含む.
      :location [=|~|~*|^~|@] pattern{……},           URI  。
  • 修飾子なし
  • 指定したモードで開始する必要があります
    server {
      server_name server1;
      location /api{
        ……
      }
    }
    
             :
    http://server1/api
    http://server1/api?t=1991
    http://server1/api/
    http://server1/api234
    
              :
    http://server1/testapi
    http://server1/v1/api
    
  • =等号
  • 指定したモードと正確に一致する必要があります
    server {
    server_name server2;
      location = /api{
        ……
      }
    }
    
             :
    http://server2/api
    http://server2/api?p1
    
              :
    http://server2/api/
    http://server2/api2
    
  • ~

  • 正則的に一致し、同時に一致する場合は大文字と小文字を区別する必要があります.
    server {
    server_name server3;
      location ~ ^/api$ {
        ……
      }
    }
    
             :
    http://server3/api
    http://server3/api?p1=11&p2=22
    
              :
    http://server3/API
    http://server3/api/
    http://server3/api234
    
  • ~*

  • 指定した正規表現は大文字と小文字を区別しません
    server {
    server_name server;
    location ~* ^/api$ {
        ……
      }
    }
              :
    http://server/api
    http://server/API
    http://server/Api
    http://server/APi
    http://server/api?p1=11&p2=22
    
               :
    http://server/api/
    http://server/apiv2
    
  • ^~

  • 修飾子なしの動作と同様に、指定されたモードで開始されますが、モードが一致すると、他のモードの検索が停止します.
  • @

  • 名前付きlocationセグメントを定義します.これらのセグメントは、try_などの内部で生成されたリクエストにのみアクセスできます.filesまたはerror_Page等
    優先順位の一致
    検索順と優先度1:「=」付きの正確な一致優先度2:修飾子なしの正確な一致3:正規表現プロファイルで定義された順序4:「^~」付き修飾子、先頭一致5:「~」または「~*」付き修飾子の場合、正規表現がURIと一致する場合6:修飾子がない場合、指定した文字列がURIの先頭と一致する場合
    root、aliasの違い
    root命令とalias命令はよく似ていて混同されやすいので、ここでは両者の違いやつながりを説明する必要があります.その名の通りaliasは別名の意味で、rootはディレクトリとの意味を表します.以下、それぞれの例を挙げて説明します.
    location /img/ {
        alias /var/www/image/;
    }
    

    この構成は、/img/が要求されるたびにnginxが要求するステアリング/var/www/image/ディレクトリを表します.
    location /img/ {
        root  /var/www/image;
    }
    

    ここでの構成は、/img/のルートディレクトリが/var/www/imageである場合、実際に要求されるディレクトリアドレスは/var/www/image/img :alias “/” , , root 。である