ホームページ  >  記事  >  バックエンド開発  >  NginxでのLocationの設定方法

NginxでのLocationの設定方法

不言
不言オリジナル
2018-07-07 16:30:243825ブラウズ

この記事では主に Nginx での Location の設定方法を紹介します。ある参考値があります。今、共有します。困っている友達は参考にしてください。

があります。今日の人 クラスメートが Nginx サイトのマルチパス マッチングについて質問しました。

1.www.domain.com/a/var/www/domain.com/a/index.html
2 を返す必要があります. www.domain.com/b を返す必要があります /var/www/domain.com/b/index.html
Nginx を有効に設定するにはどうすればよいですか?

この問題を解決するには、まず Nginx の位置ディレクティブを直接使用して解決しますが、答えを与える前に、まず Nginx の位置ディレクティブの基本を理解しましょう。

Nginx ブロック構成の概念

Nginx 構成ファイルでは、通常、よく使用される 2 つのブロック (Block) が設定に使用されます。

1.サーバー領域ブロック
2 .Localtion Block

ここでのブロックとは Block のことで、次の {} のペアの間の設定内容と理解することもできます。

サーバー ブロックは主に、ドメイン名、IP、ポート、ホストのその他の内容の構成など、実際のホストの構成です。もちろん、Nginx 構成ファイルでは、複数の Sever ブロックの構成を指定できます。

Location ブロックは Sever ブロック内にあり、さまざまなパスとリクエストの構成にさらに分割されます。通常、サイトには多くの URI があるため、Location ブロック設定に複数の Location 構成を記述することもできます。

最初に場所設定の基本的な構文を見てみましょう:

location optional_modifier location_match {
 # 这个 {} 里面的配置内容就是一个区块 Block
}

上記の optional_modifier 設定項目では正規表現を使用できます。一般的に使用されるものは次のとおりです。

  1. は空白のままにします。はい、空白のままにすることも設定方法です。空白のままにすると、構成はリクエスト パスが location_match で始まることを示します。

  2. = と同様に、等号は非常に理解しやすいものです。リクエスト パスは、次の location_match の値とまったく同じです。最初の項目を残す 空であることにはまだ違いがあります。

  3. ~、浮動小数点数 (英語で入力された浮動小数点であることに注意してください) は、大文字と小文字を区別する正規の一致を示します。

  4. ~* は、大文字と小文字を区別しない正規の一致を表します。

  5. #^~ は、ここでは通常の一致が発生しないことが予想されることを意味します。

Nginx が Location ブロックを処理する順序

上記では、location ディレクティブの基本概念と一般的な構成について説明しています。位置情報が有効になる順序を見てみましょう。これも非常に重要です:

各リクエストが Nginx に届いた後、Nginx は応答するロケーションに最も一致するものを選択します。具体的な処理プロセスは、それをロケーションの構成と 1 つずつ比較することです。このステップは次のステップに分けることができます。

  1. 最初に

    プレフィックス を照合します (つまり、場所のOptional_modifier が空の構成)。

  2. Nginx は、URI に基づいて正確に一致するロケーション設定 (つまり、ロケーションのOptional_modifier が

    = である設定) を検索します。

  3. それでも一致しない場合は、最初に

    ^~ 設定を一致させます。設定が見つかった場合は、検索プロセスが停止され、応答コンテンツが返されます。直接。

  4. 一致するものが見つからない場合は、大文字と小文字を区別する通常の一致が最初に実行され、次に大文字と小文字を区別しない通常の一致が実行されます。

Nginx の場所設定の例:

これ以上話しても無駄です。非常に多くの理論を読んだ後、それを裏付ける具体的な例がなければ意味がありません。設定例:

location  = / {
  # = 等号配置符,只匹配 / 这个路由
}
location /data {
   # 留空配置,会匹配有 /data 开始的路由,后续有匹配会往下匹配。
}
location ^~ /img/ {
  # 注意 ^~ 配置,这里匹配到 /img/ 开始的话,直接就返回了。
}
location ~* .(png|gif|ico|jpg|jpeg)$ {
  # 匹配以 png, gif, ico, jpg or jpeg 结尾的请求;这个通常用来设置图片的请求响应。 
}

2 つの非常に実用的な例:

1. 単純なイメージのホットリンク防止

location ~ .(png|gif|jpe?g)$ {
  valid_referers none blocked yourwebsite.com *.yourwebsite.com;
  # 注意上面写上你的域名就好  
  if ($invalid_referer) {
      return   403;
  }
}
2.書き込み可能なパス、

php または js ステップの実行を禁止します

location ~* /(media|images|cache|tmp|logs)/.*.(php|jsp|pl|py|asp|cgi|sh)$ {
  return 403;
}
質問の答え

最後に、質問の答えを見てみましょうこれは次のようになります:

location /a {
   root /var/www/domain.com/a;
}

location /b {
   root /var/www/domain.com/b;
}
上記はこの記事の全内容です。皆様の学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語に注目してください。 Webサイト!

関連する推奨事項:

nginx を使用して 1 台のサーバーに複数の Web サーバーをデプロイする

以上がNginxでのLocationの設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。