yourname.yeah.net などの短縮ドメイン名を使用すると、誰もが非常に便利だと感じます。自分のサーバーで短縮ドメイン名を実装できればと考えている人は多いでしょう。実際には複雑ではありません。この記事を読んだ後は、短縮ドメイン ネーム システムを作成することもできます。
短縮ドメイン名システムの主要なテクノロジーは、Web ページのリダイレクト (リディレクトリ) を実現することです。本質的に、短縮ドメイン名システムと仮想マシン システムはまったく異なります。仮想ドメイン名と仮想マシンの IP の間には 1 対 1 の対応関係があります。短縮ドメイン名システムでは、ドメイン名と IP を 1 対 1 でマッピングする必要はありません。つまり、複雑なドメイン名解決メカニズムや仮想マシンを必要とせず、yourname.somedomain をリクエストすると、HTML ページを最初に保存した場所にブラウザーがリダイレクトされます。
より完全に説明するために、次の凡例は次のとおりです:
私が提供するソースプログラムは実行環境です: RedHat 5.1 Linux 上の Apache1.3.6 Web サーバー + PHP3 言語。 プログラムを作成する前に、まずサーバーをセットアップする必要があります。まず、Apache サーバーが php3 をサポートするようにします。 ftp.redhat.com に移動して mod_php-2.0.1-9.i386.rpm をダウンロードします。インストール後、/etc/httpd/conf/http.conf ファイルを変更し、#LoadModule php3_module の前にある # コメント番号を削除します。 /etc にもある文 /httpd/conf/srm.conf ファイル内の #AddType application/x-httpd-php3 .php3 の前にあるコメント番号を削除し、DirectoryIndex 項目の後にindex.php3 を追加します。 Apache サーバーを再起動します。この時点で、サーバーは標準の php3 言語スクリプト ファイルをサポートし、index.php3 をデフォルトのホームページとして使用できます。
汎ドメイン名を解決できるように DNS サーバーを設定します。一般的な Unix および Linux システムの DNS 解決は、Bind4 および Bind8 の設定ファイルはそれぞれ /etc/named.boot および name.conf であり、設定中にシステムに応じて変更します。バインド設定ファイル /etc/named.boot を設定し、「primary domain.com db.domain」という文を追加し、新しいドメイン レコードを追加します。 /etc/name.conf に追加します:
ゾーン "domain.com" { type master;
file "db.domain" };
/var/name/ に新しいマスター ドメイン レコード ファイル db.domain を作成します。形式は次のとおりです: N SOA dns.domain.com root.domain.com (
199811291 ; Serial
28800 ; リフレッシュ
7200 ; 再試行
604800 ; 期限切れ
86400) ; 最小
dns
MX 10 dns.domain.com。
DNS A 202.115.135.50
www A 202.115.135.50
* A 202.115.135.50
キーは最後の文、つまり、ドメイン全体のマークされていないすべてのホスト名が同じIPを指す可能性があります。 /usr/sbin/ndc reload を実行して、ドメイン名データベースを再ロードします。この時点で、ドメイン内の任意のホスト (マークされているホストを除く) に ping を実行し、すべてが指定された IP をポイントするようにする必要があります。これで、DNS サーバーの設定が完了します。
最後のステップは、PHP3 スクリプトをコンパイルすることです。全体の原理を図で詳しく説明したので、リダイレクト プログラムを書くのは難しくありません。
IE5.0によって送信される完全なHTTPヘッダー情報を見てみましょう:
Accept: application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, image/gif, image/x-xbitmap 、image/jpeg、image/pjpeg、*/*
Accept-Encoding: gzip、deflate
Accept-Language: zh-cn
接続: Keep-Alive
ホスト: ww.yahoo.com
ユーザー エージェント: Mozilla/4.0 (互換; MSIE 5.0b1; Windows 98)
HTTPヘッダー情報全体からホスト情報を取り出し、http://www.jj.jx.cn/www.xxxという形式の最初の部分を変更する必要があります。 .xxx/default.htm 「www」、つまりHostName(つまりユーザーが登録した名前)を別途取り出して、リダイレクト検索のキーワードとして使用します。
ユーザーが登録したURL情報を取得した後、リダイレクトコマンド「Localtion: http://www.jj.jx.cn/somewhere/sample.html」をユーザーのブラウザに送信し、指定されたページにユーザーをリダイレクトします。
PHP3にはブラウザから送信されたHTTPヘッダー情報を取得する関数GetAllHeader()があります。主にこの関数を使用してプログラム全体を完成させる必要があります。
ソースプログラムは最後に添付されていますが、あくまで実験的なものなので、システム全体を実用化する場合はデータベースに接続する必要があります。ユーザー情報を照会するプロセスは非常に長くなり、効率に大きく影響し、ユーザーデータの管理が不便になります。 (容量の都合上、登録・管理に必要な書き込み・記録手順は記載しておりません。ご自身で追加してください。)
ソースプログラムでは、すべてのユーザー情報がdataサブディレクトリのuser.datファイルに記録されます。その形式は:
ユーザー名:
http://octopus.cdit.edu.cn/~qap213/index.html
附PHP3源程序:
//HTTPのヘッダを取得して解析する//
$headers = getallheaders();
while (list($header, $value) = each($headers)) {
if($header=="Host"){$username= strtok($value,".");}}
//ジャンプバナーのウィンドウから出る//
echo '';
// 記録されたファイルからユーザー情報を取得します//
if(!$usrinfo=file("data /user.dat")){echo "データ ファイルを開くエラー!!";}
$url="http://";
for($i=0;$i
$url=$usrinfo[$i+1];
}
if($url=="http://" ){echo "データの uesrname が見つかりません!";}
else{
echo '
?>
以上は、ドメイン名セキュリティ システムに関する内容を含む、ドメイン名セキュリティ システムがどのように公開されるかを説明しました。PHP 教則に関心のある友人の助けになることが望ましいです。