ホームページ >バックエンド開発 >PHPチュートリアル >nginx ロケーションの基本構成とロケーションのベストプラクティス

nginx ロケーションの基本構成とロケーションのベストプラクティス

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-07-28 08:28:06926ブラウズ

http://www.tuicool.com/articles/Jr63qy にリダイレクトします

文法規則: location [=|~|~*|^~] /uri/ { … }
= 先頭は完全一致を意味します
^~先頭は uri を意味します。通常の文字列で始まると、URL パスと一致すると理解できます。 nginx は URL をエンコードしないため、リクエストは /static/20%/aa となり、ルール ^~ /static/ /aa (スペースに注意してください) と一致します。
~ の先頭は大文字と小文字を区別する正規一致を示します
~* 先頭は大文字と小文字を区別しない正規一致を示します
!~ と !~* はそれぞれ大文字と小文字を区別する非一致と大文字と小文字を区別しない非一致の正規一致を示します
/ ユニバーサルマッチング, どのようなご要望にも対応させていただきます。
複数のロケーション構成の場合、一致順序は次のとおりです (参考資料から取得されており、実際には検証されていません。試してみればわかります。厳格である必要はありません。参考までに)
最初の一致 =、2 番目の一致^~、次にファイルによる通常のマッチングの順で、最後に / ユニバーサル マッチングです。照合が成功すると、照合は停止され、現在の照合ルールに従ってリクエストが処理されます。
例として、次のような一致ルールがあります:
location = / {
#Rule A
}
location = /login {
#Rule B
}
location ^~ /static/ {
#Rule C
}
location ~ .( gif|jpg|png|js|css)$ {
#RuleD
}
場所 ~* .png$ {
#RuleE
}
場所 !~ .xhtml$ {
#RuleF
}
場所 !~ * .xhtml$ {
#Rule G
}
location / {
#Rule H
}
その結果は次のようになります:
http://localhost/ などのルート ディレクトリ/にアクセスすると、ルール A に一致します
http にアクセスします:/ /localhost/login はルール B に一致し、http://localhost/register はルール H に一致します
http://localhost/static/a.html にアクセスします
ルール C に一致します
http://localhost/a.gif にアクセスします, http://localhost/b.jpg はルール D とルール E に一致しますが、ルール D が優先され、ルール E は影響しません。一方、http://localhost/static/c.png はルール C に最初に一致します
http にアクセスします: //localhost/a.PNG はルール E に一致しますが、ルール E では大文字と小文字が区別されないため、ルール D には一致しません。
http://localhost/a.xhtml へのアクセスはルール F とルール G に一致しません。 http://localhost/a.XHTML は大文字と小文字が区別されないため、ルール G に一致しません。ルール F とルール G は消去法に属し、マッチングルールには適合するがマッチングされないため、実際のアプリケーションで使用する場所を検討してください。
http://localhost/category/id/1111 にアクセスし、最後にルール H に一致します。上記のルールのいずれも一致しないため、nginx はこの時点でリクエストを FastCGI (php) などのバックエンド アプリケーション サーバーに転送する必要があります。 tomcat (jsp) 、 nginx がディレクションプロキシサーバーとして存在します。
実際のアプリケーションで一般的に使用されるいくつかのルールは次のとおりです:
# Web サイトのルートに直接一致します。これを使用すると、処理が高速化されると公式 Web サイトに記載されています。
#これはバックエンド アプリケーション サーバーに直接転送されるか、静的ホームページにすることもできます
# 最初の必須ルール
location = / {
proxy_pass http://tomcat:8080/index
}

# 2 番目のルール最初に必要なルールは、静的ファイル リクエストを処理することです。これは、http サーバーとしての nginx の強みです
# ディレクトリ マッチングまたはサフィックス マッチングの 2 つの構成モードがあり、1 つを選択するか、両方を一緒に使用します
location ^~ /static/ {
# リクエスト /static/a.txt は実際のディレクトリ ファイルにマッピングされます: /webroot/res/static/a.txt
root /webroot/res/;
}
location ~* .(gif|jpg|jpeg|png |css| js|ico)$ {
root /webroot/res/;
}
#3 番目のルールは、動的リクエストをバックエンド アプリケーション サーバーに転送するために使用される一般的なルールです
#非静的ファイル リクエストはデフォルトでの動的リクエストは実際の把握に基づいています
#結局のところ、現在の一部のフレームワークの人気により、.php および .jsp 接尾辞を持つケースはほとんどありません
location / {
proxy_pass http://tomcat:8080/
}
上記の基本的な推奨構成には、次の 1 つがあります。 さらに、転送に関して注意すべき点が 1 つあります。たとえば、次の設定はディレクトリを転送します。
キーは最後の / にあり、localhost/outer/in.html にアクセスすると、ケース A は tomcat:8080/in.html に転送され、ケース B は tomcat:8080/in.html に転送されます。 tomcat:8080/outer /in.html に注意してください。

上記では、nginx の基本的なロケーション設定とロケーションのベスト プラクティスを、関連するコンテンツも含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

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