マルチドメイン名環境、ページ取得ソリューション url_html/css_WEB-ITnose

WBOY
リリース: 2016-06-24 11:56:32
オリジナル
956 人が閲覧しました

システムは分散方式で展開され、複数のドメイン名があるため、URL の取得の問題が頻繁に発生します。これはシステム フレームワーク レベルで提供する必要がある機能です。そうしないと、各モジュールが IP を取得する独自の方法を見つける必要があり、オンラインになると非常に混乱し、バグが発生しやすくなります

いくつかの主な問題があります。解決する必要がある問題:

1. 開発環境と本番環境を自動的に区別する機能。たとえば、オンラインで展開する場合、URL は http://www.xxx.com/svc/hello になりますが、ローカルで開発する場合は http://127.0.0.1/svc/hello にする必要があります。完全に書き込むことはできません。そうしないと、開発と展開を行ったり来たりする必要があり、非常に面倒です

2. さまざまなサービスに応じて URL を区別できる。たとえば、確認コード サービスを取得するには、http://www.xxx.com/svc/getCode を呼び出す必要があります。また、WeChat 関連のサービスの場合は、http://wx.xxx.com/svc/xxx を呼び出す必要があります。

この記事の概要を共有しましょう アイデア:

構成ファイル

1. アプリケーションには、開発モードで開始するか運用モードで開始するかを説明する、対応する構成ファイルがあります。そして、認証関連の URL、WeChat 関連の URL、共通サービス関連の URL などの URL を分離します。

2 同時に、topo-dev.json、topo- などの複数の設定ファイルがあります。 Production.json、topo -image.json などこれにより、異なる環境が分離されます。開発モードで起動すると、topo-dev.json がロードされ、設定された URL はすべて 127.0.0.1 のようになります

3. 起動時に、この設定ファイルをロードし、キー情報を配置します。 global._g_env グローバル変数を使用すると、実行時に環境と URL 情報を簡単に取得できます

サーバーは URL を取得します

サーバー コードはノード環境でも実行されるため、URL を取得するのは非常に簡単です。 _g_env.url、構成ファイル内のパスを取得できます

フロントエンド ページは URL を取得します

フロントエンド ページは、多くの場合、Ajax リクエストを送信する必要があるため、URL も知る必要があります。ただし、静的 js にはサーバーの環境情報と URL を取得する方法がないため、この情報をサーバーから取得する必要があります。

まず、サーバーにはこの情報を具体的に配信するサービスがあります。

function clientSettingScript(req, res, next){    var script = "window.global = {_g_server:{}}; \n"+        ";global[\"_g_server\"].staticurl=\"" +global["_g_topo"].clientAccess.staticurl + "\"\n"+        ";global[\"_g_server\"].uploadurl=\"" +global["_g_topo"].clientAccess.uploadurl + "\"\n"+        ";global[\"_g_server\"].authurl=\"" +global["_g_topo"].clientAccess.authurl + "\"\n"+        ";global[\"_g_server\"].serviceurl=\"" +global["_g_topo"].clientAccess.serviceurl + "\"\n"+        ";global[\"_g_server\"].wxserviceurl=\"" +global["_g_topo"].clientAccess.wxserviceurl + "\"\n"+        ";global[\"_g_server\"].nail_pc_url=\"" +global["_g_topo"].connector.nail_pc_url + "\"\n"+        ";global[\"_g_env\"] =\"" +global["_g_topo"].env+ "\";\n";    res.end(script);}
ログイン後にコピー

これは普通の特急サービスですが、実際には JS スクリプトです。フロントエンドページでは、script タグを使用してロードします


<script src="/svc/portal/setting"></script>
ログイン後にコピー

このようにして、ブラウザは応答を受け取ると、それを js スクリプトとして実行し、グローバル変数 global をウィンドウには、環境情報と URL 情報が含まれています


同時に、URL にはドメイン名のみが含まれており、ページは次のような実際の状況に応じて完全な URL を組み立てます。

このアプローチの鍵は次のとおりです:

1. URL と環境情報は、コード内にハードコーディングされるのではなく、別の構成ファイルに配置されます。同時に、開発環境、本番環境、ミラー環境に応じて異なる設定ファイルを分離します

2. これらの設定情報をクライアント ページに提供するサービスを特にサーバー側で作成します。死刑に処せられる

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!