背景 最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法という問題に遭遇しました。ドメイン名の証明書の申請やドメイン名の設定を自分でやりたくなかったので、この解決策を考え、Nginx のロケーション機能と組み合わせて自分のニーズを実現し、記録しました。この例ではデモンストレーションに PHP プロジェクトを使用していますが、他の言語も同様の方法でデプロイできます。たとえば、ノード プロジェクトの場合、location で検証を実行し、porxy_pass リバース プロキシ モジュールを使用してそれを実装できます。 位置モジュールのマッチングの紹介 1. 「=」プレフィックス命令が一致します。一致が成功すると、他の一致は停止されます。 2. 通常の文字列命令マッチングでは、順序は長いものから短いものへで、マッチングに成功した場所で ^~ を使用した場合、他のマッチングは停止します (通常のマッチング)。 3. 正規表現の指示は設定ファイル内の順序で照合され、他の照合が成功した場合は停止されます。 4. 3 番目のステップで一致があった場合はその結果を使用し、一致がない場合は 2 番目のステップの結果を使用します。 注記 1. 一致順序は、最初に通常の文字列と一致し、次に正規表現と一致します。また、共通文字列のマッチング順序は、設定内の文字の長さに応じて長いものから短いものの順になります。つまり、共通文字列で設定された場所の順序は関係ありません。最終的には、nginx は設定の長さに応じてマッチングを行います。ただし、正規表現は設定ファイル内の順序でテストされることに注意してください。正規表現の最初の一致が見つかると検索は停止します。 2. 一般的に、通常の文字列の位置の一致が成功すると、正規表現の位置も一致します。この動作を変更するには 2 つの方法があります。1 つは「=」プレフィックスを使用することです。これは厳密な一致を実行し、リクエストの処理中に一致が成功した後すぐに他の一致を停止します。もう 1 つは「^~」プレフィックスを使用することです。このプレフィックスを通常の文字列に使用すると、パスが一致する場合に nginx に正規表現をテストしないように指示します。 場所 = /uri = は完全一致を示し、完全一致のみが有効になります。 場所 ^~ /uri ^~ は URL パスのプレフィックス一致で始まり、正規表現の前にあります。 場所 ~ パターン ~ は大文字と小文字を区別する正規表現で始まります。 場所 ~* パターン ~* は大文字と小文字を区別しない正規表現で始まります。 場所/uri 修飾子がない場合、これもプレフィックス一致を意味しますが、正規表現一致の後の一致になります。 位置 / ユニバーサル マッチングでは、他の場所と一致しないすべてのリクエストが一致します。これは、スイッチのデフォルトと同等です。 設定例 サーバー{ 聞く 80; サーバー名 test.com; インデックス index.html index.htm index.php; 文字セット koi8-r; access_log /var/log/nginx/host.access.log メイン; #ドメイン名 + プロジェクト1の名前の場所 ^~ /a1/ { エイリアス /usr/share/nginx/html/a1/public/; } #ドメイン名 + プロジェクト2の名前の場所 ^~ /a2/ { エイリアス /usr/share/nginx/html/a2/public/; } エラーページ 404 /404.html; # サーバーのエラーページを静的ページ /50x.html にリダイレクトします エラーページ 500 502 503 504 /50x.html; 場所 = /50x.html { ルート /usr/share/nginx/html/500.html; } #PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します 場所 ~ \.php$ { ルートhtml; 127.0.0.1:9000; をデフォルトとして設定します。 fastcgi_index インデックス.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_params を含めます。 } 場所 ~ /\.ht { すべてを否定する; } } 効果プレビュー 1. a1プロジェクトを訪問する 2. a2プロジェクトを訪問する 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Mysqlの自動増分IDについて知らないことがあるかもしれません
>>: ネイティブJSを使用した遅延読み込みlazyLoadの3つの方法の概要
通常のプロジェクト開発中に、MySQL バージョンが 5.6 から 5.7 にアップグレードされた場...
MySQL クエリ キャッシュを設定する目的は次のとおりです。クエリ結果をキャッシュしておくと、次回...
最近、 Ubuntu 20.04でkazamを使用して録音しているときに、問題が見つかりました。シス...
1. <div></div> と <span></spa...
Linuxライブラリを生成するLinux版はcentos7.3を使用し、コンパイルしてライブラリを生...
この記事では、例を使用して、MySQL データベースの最適化のためのインデックス実装の原則と使用方法...
Nginx の紹介Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...
目次1. ブール2. 表現3. マルチクラスパッケージ4. v-bind でクラス class を直...
ウェブページを画像としてキャプチャする新機能があったので、人気のhtml2canvasを使ってみまし...
この記事では、マウス フリップナビゲーションの制作についてまだ疑問を持っている友人の役に立つことを期...
1. 縦型テーブルと横型テーブル垂直テーブル: テーブル内のフィールドとフィールド値はキーと値の形式...
目次1. Tomcatコードをダウンロードする2. ダウンロード後のディレクトリ構造3. ソースコー...
目次1. 再帰とは何ですか? 2. 再帰を使って数学の問題を解く1. 1 * 2 * 3 * 4 …...
序文最近、クライアントのネイティブページを引き継ぎました。顧客は、ページが IE9 以降のバージョン...
目次新しいユーザーを作成する新規ユーザーを承認する新規ユーザーのSSHキーログインを有効にする他のS...