ユーザーがサイトにサインアップするときにサブドメインを設定するにはどうすればよいですか。
必要なインフラストラクチャは何ですか? Linux サーバーを使用しています。
既知のサブドメインごとに特定の DNS (CNAME
またはA
/ ) エントリを使用するか、*.example.com を受け入れるワイルドカード DNS エントリを使用できます。AAAA
$ORIGIN example.com
foo IN A 12.34.6.78
bar IN A 12.34.6.78
また
$ORIGIN example.com
* IN A 12.34.6.78
この後者の利点は、サービスが実行されると、DNS または Apache の構成を変更する必要がないことです。不利な点は、そのようなワイルドカード ルックアップはすべて (定義により) 最終的に同じ IP アドレスを返さなければならないことです。
Apache の構成は、エンド ユーザーの制御とセキュリティの両方について、要件によって異なります。ユーザーがサーバー上で CGI スクリプトを実行する権限を持っている場合は、それが安全に行われるようにするために追加のセットアップが必要になることに注意してください。
コンテンツが静的か動的かに応じて、これは構成にも影響します。
mod_vhost_alias
個々の仮想ホストをサーバー上の個々のディレクトリにマップするために使用します。
本当に必要な場合は、既知のサイトごとに個別の<VirtualHost>
セクションを作成しますが、新しいユーザーがサインアップするたびに Apache を再起動する必要があります
シングルを使用し、出力をレンダリングするスクリプトで<VirtualHost>
(環境変数から) 要求された URL のホスト名部分を調べて、表示するユーザーのコンテンツを特定します。$SERVER_NAME
サブドメインごとに、DNS設定でCNAMEエントリ/ Aレコードを作成できます
CNAME レコードは、ドメインのサブドメインを制御できるドメイン管理設定のレコードです。
登録とともにそれを自動化するには、登録時に各ユーザーに対して実行されるスクリプトを作成できます。
Apache の段階的なプロセスについては、次のリンクも参照できます。
(Linux とおっしゃっていたので、APache だと思います。そうでなければ言及してください)
代替ソリューション
同じスレッドでAlnitakが提供するワイルドカード ソリューションを参照することもできます。彼の方が簡単な方法だと思います。:)
インフラストラクチャには、DNS サーバーにアクセスしてワイルドカード エントリを追加し、Apache でルールを書き換えることが含まれます。
これらの答えを試してください:
またはこのリンク:
Linux サーバーを使用している場合は、Web サーバーとして Apache を使用していると想定しています。
サブドメインと仮想ホストに対して適切な DNS ルーティングをセットアップする必要があります。
仮想ホストはかなり簡単にセットアップできますが、その場でプログラム的に実行するのがどれほど簡単かはわかりません。
ほとんどの場合、Apache 構成ファイルを編集して以下を追加するのと同じくらい簡単です。
Port 80
ServerName www.mydomain.com
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/user-bob
ServerName bob.mydomain.com
...
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/user-sally
ServerName sally.mydomain.com
...
</VirtualHost>
VirtualHost のドキュメントは、おそらく役に立つでしょう。
Apache では、単一サーバー上のサブドメインに基づいて、任意の数の「サイト」を指定できます。適切なサブドメイン情報と適切な DNS ワイルドカードを含む新しい「サイト定義」ファイルを作成すると、必要なことが行われます。
つまり、プロセスは次のようになります。
重要これは、構成ファイルがディレクトリに含まれる Debian スタイルの Apache 構成に基づいており、メイン構成はそのディレクトリ内のすべての構成ファイルを読み取ります。サブドメインの追加/削除は、単一のファイルを編集するのではなく、ファイルの追加/削除を意味するため、プロセスの自動化がはるかに簡単になるため、これにより作業が大幅に簡素化されます。