Nginx サーバー ブロック: サブドメインとパス

Nginx サーバー ブロック: サブドメインとパス

サブドメインとロケーションパスの違いは何ですか
例:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name xxxx.yyy.com;

    location / {

        proxy_pass http://127.0.0.1:3000;

    }

}

または

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    server_name yyy.com;

    location / {

        proxy_pass http://127.0.0.1:3000;

    }
    location /xxxx/ {

        proxy_pass http://127.0.0.1:4000;

    }

}

明らかに、分離レベルは異なります。1 番目は DNS サーバーで分離され、2 番目は nginx 自体でリクエストの方向が行われます。私が知りたいのは、一方のソリューションを他方のソリューションよりも選択する場合の注意事項は何かということです。

答え1

必要に応じて、NGINX に IP アドレスまたはポート上のすべてのリクエストに応答するように指示できます。構成内のサブドメイン/ドメインは、特定の「サーバー」構成ブロックからの応答を制限するだけです。

場所は何もないドメイン/サブドメインとは関係ありませんが、サーバー ブロックで設定されている内容に基づいて動作します。通常、NGINX の場合、最初にドメインと IP をリッスン用に設定し、その後は完全に忘れます。

最初の例の設定xxxx.yyy.com=>http://127.0.0.1:3000

2番目の例の設定yyy.com/xxxx=>http://127.0.0.1:4000

ベース ドメインとサブドメインの両方を #2 のサーバー ブロックに配置することで、例 #1 を例 #2 に組み合わせることができます (両方のパスがベース ドメインとサブドメインの両方で機能することを気にしない場合)。


server {

    listen 80 default_server;
    listen [::]:80 default_server;

    server_name yyy.com xxxx.yyy.com;

    location / {

        proxy_pass http://127.0.0.1:3000;

    }

    location /xxxx/ {

        proxy_pass http://127.0.0.1:4000;

    }
}

したがって、異なる IP アドレスでこれらをホストしない限り、おっしゃるとおり「DNS での分離」は存在しないことがわかります。唯一の分離はパスにあります。

組み合わせた例では次のようになります。

xxxx.yyy.com=>http://127.0.0.1:3000

yyy.com=>http://127.0.0.1:3000

yyy.com/xxxx=>http://127.0.0.1:4000

xxxx.yyy.com/xxxx=>http://127.0.0.1:4000

サブドメインはパスではありません。まったく異なるものです。したがって、それらを比較対照しようとすると、理解が大きく外れていることがわかります。

おそらく、過去にサブドメインを作成したことがあるでしょう。サブドメイン用のディレクトリが 1 つとメイン ドメイン用のディレクトリが 1 つあります。これらは docroot であり、一部の Web ベースのサーバー管理ツールがデフォルトで設定する方法です。サブドメインとパスの間には、ユーザー (または何らかのツールやシステム管理者) が作成しない限り、固有の関連付けはありません。

任意のドメインまたはサブドメイン、あるいはロケーション ブロックに設定した任意のパスを、ファイルシステム内の /any/path/you/want にマップできます。

ロケーションはパスが重要...ここでも、NGINX はサーバー ブロックに一致するリクエストを見つけた後、HTTP リクエスト内のパスに一致するリクエストを監視します。

/thispath /thatpath /foo /bar または /foo/bar/on/thatpath またはワイルドカードと正規表現を使用できます。異なるディレクトリから異なるファイル拡張子が提供されるように設定できます。また、location の一般的な使用法は、PHP などの特定のファイル タイプを処理する方法を NGINX に指示することです。

ここではいくつかの構成例を示します。http://nginx.org/en/docs/beginners_guide.html

これが役に立ったと思われる場合は、賛成票を投じるか、解決策としてマークしてください。ありがとうございます!

答え2

トピックは nginx の構成であるため、両方のドメインが同じ IP/サーバーを指している場合は、DNS レベルの分離はありません。
違いは、どのドメインでどのパスが使用可能/処理されるかです。
同じ場所で 1 つのドメインが異なる複数のドメインを構成できます。これが の主な用途ですserver_name

locationブロックは、ドメイン名/IP の後の URL の部分です。
http://www.example.com/location/ 異なる場所のブロック/URL で異なるローカル パスを利用できるようになります。

DNS で実現できることは、nginx の構成とは異なります。DNS
ラウンドロビンにより、負荷分散と高可用性が可能になります。
地理的位置に基づく解決により、コンテンツの配信が高速化されます。

それは本当にあなたが何を達成したいかによります。

関連情報