1. ホーム
  2. networking

[解決済み] ルートドメインCNAMEの制限を克服するには?

2022-08-17 11:12:03

質問

私たちは顧客のために多くの Web アプリケーションをホストしています。 当然のことながら、彼らはそれらのアプリケーションを参照するために独自のドメインを使用したいと考えています。 http://www.customer1.example または http://customer1.example はそのウェブアプリケーションに送られます。

私たちが直面している状況は、近い将来に IP アドレスを変更する柔軟性を持つ必要があるということです。 そして、顧客が自分のドメインで A レコードの変更を行うことに依存したくありません。 そこで、私たちは CNAME レコードを使用すればうまくいくと考えていましたが、その結果 CNAME レコードはルートドメインでは機能しません。

基本的には

customer1.example IN CNAME customer1.mycompanydomain.example //this is invalid as the RFC
www.customer1.example IN CNAME customer1.mycompanydomain.example //this is valid and will work

の IP アドレスを変更できるようにしたい。 customer1.mycompanydomain.example または A というレコードがあり、顧客は私たちが管理しているこのレコードに従うことになります。

は、私たちのDNSでは次のように表示されます。

customer1.mycompanydomain.example IN A 192.0.2.1

何かアイデアはありますか?

どのように解決するのですか?

sipwizとMrEvilの両氏に感謝します。 私たちは、ユーザーが入力した URL を解析し、貼り付ける PHP スクリプトを開発しました。 www をその先頭に貼り付けるようにしました。(例:顧客が入力した場合 kiragiannis.com と入力すると、次のようにリダイレクトされます。 www.kiragiannis.com ). そのため、お客様は自分のルート (例えば customer1.comA を記録し(ウェブリダイレクタがある場所)、次に www CNAME を本当の A のレコードに変換します。

あなたが将来の私たちのために興味を持っている場合には、以下のコード。

<?php
$url = strtolower($_SERVER["HTTP_HOST"]);

if(strpos($url, "//") !== false) { // remove http://
  $url = substr($url, strpos($url, "//") + 2);
}

$urlPagePath = "";
if(strpos($url, "/") !== false) { // store post-domain page path to append later
  $urlPagePath = substr($url, strpos($url, "/"));
  $url = substr($url, 0, strpos($url,"/"));
}


$urlLast = substr($url, strrpos($url, "."));
$url = substr($url, 0, strrpos($url, "."));


if(strpos($url, ".") !== false) { // get rid of subdomain(s)
  $url = substr($url, strrpos($url, ".") + 1);
}


$url = "http://www." . $url . $urlLast . $urlPagePath;

header( "Location:{$url}");
?>