開発Blog

iAPへアクセスするURLが複数ある場合のベースURLの設定方法

投稿日:2014-08-18 更新日:

ここでは、ベースURL をリクエスト情報を基に切り替えるための手順を
BaseUrlProvider のサンプル実装、Webサーバとの連携例と共に紹介します。
製品標準の設定では、テナント一つにつき、一つのベースURLのみが設定可能ですが、BaseUrlProvider インタフェースを実装することで、複数のベースURLを持たせることができます。
BaseUrlProvider は intra-mart Accel Platform 2014 Summer(Honoka) から導入されたインタフェースです。したがい、2014 Summer(Honoka) 以降で使用可能です。

注意事項

    1. IMBox の 通知情報, IM-Workflow のショートカットURL, IM-FileExchange のダウンロードURL、パスワードリマインダで複数のベースURLからのアクセスを実現したい場合、 メールテンプレートに以下のような形式で記述することで、任意のベースURL配下のURLにアクセスできます。

%ご利用環境のベースURL固定文字% + [ショートカットURL置換文字列]

      • 詳細は以下の要件情報を参照してください。

・IM-Workflow ベースURLを含まない置換文字列を提供します(2015 Spring~)

・IMBOX IMBoxの通知情報に含まれるURLにベースURLを含まれないようにします(2014 Summer

・IM-FileExchange ベースURLを含まないURLを文字列置換可能にする(2015 Summer

・パスワードリマインダ ベースURLを含まないURLを文字列置換可能にする(2015 Summer

BaseUrlProvider の実装

リクエストヘッダーに応じて異なるベースURLを返却する BaseUrlProvide を実装します。

    1. 以下の内容のファイルを WEB-INF/classes/com/example/SampleBaseUrlProvider.java として保存します。

    1. リクエストヘッダー「x-com-example-base-url」値が「base1」の場合「http://192.168.1.1/imart」、
    1. リクエストヘッダー「x-com-example-base-url」値が「base2」の場合「http://192.168.1.1:81/imart」になるように実装しています。
  1. 以下の内容のファイルを WEB-INF/classes/META-INF/services/jp.co.intra_mart.foundation.platform.BaseUrlProvider として保存します。

以降の手順は、Web サーバに Apache もしくは IIS を利用している想定で記述します。
ご使用の Web サーバに合わせて、読み進めてください。

Apache HTTP Server を使用している場合

Apache の VirtualHost 機能を利用し、入り口を2つ作成します。
2つの入り口に対して、mod_headers モジュールを利用し、リクエストヘッダー(x-com-example-base-url)をそれぞれ設定することでベースURLを切り替えます。

前提条件

モジュールの取得

本ドキュメントでは以下の Apache モジュールを利用します。
取得に当たっては、製品元のマニュアルを参照してください。

  • mod_proxy
  • mod_rewrite
  • mod_headers

手順

以降の手順では下記の環境を想定しています。

iAPのコンテキストパス imart
apacheのドキュメントルート /usr/local/apache/htdocs
静的ファイルの展開フォルダ /usr/local/apache/htdocs/imart
iAPのIPアドレス 192.168.1.1
iAPのポート番号 8080
apache(VirtualHost1)のIPアドレス 192.168.1.1
apache(VirtualHost1)のポート番号 80
apache(VirtualHost2)のIPアドレス 192.168.1.1
apache(VirtualHost2)のポート番号 81
  1. %APACHE_HOME%/conf/httpd.conf ファイルを開きます。
  2. Dynamic Shared Object (DSO) Support エリアに以下の設定を追加またはコメントアウトを外してください。
  3. 80, 81 番ポートをリッスンするよう、以下の設定を追加または編集してください。
  4. 末尾に以下の設定を追加してください。
  5. Apache を再起動してください。
  6. 以下を確認してください。

Internet Information Services(IIS) を使用している場合

IIS の Web サイト機能を利用し、入り口を2つ作成します。
2つの入り口に対して、URL Rewrite モジュールを利用し、リクエストヘッダー(x-com-example-base-url)をそれぞれ設定することでベースURLを切り替えます。

前提条件

  • IIS の設定がされていること。

設定手順はセットアップガイド-Internet Information Services(IIS)を参照してください。

手順

以降の手順では下記の環境を想定しています。

iAP のコンテキストパス imart
IIS のルート ディレクトリ C:\inetpub\wwwroot
静的ファイルの展開フォルダ C:\imart
IIS の IP アドレス(Web サイト1) 192.168.1.1
IIS のポート番号(Web サイト1) 80
IIS の IP アドレス(Web サイト2) 192.168.1.1
IIS のポート番号(Web サイト2) 81
  1. web.config を以下のように変更します。
    変更前

    変更後

    これにより、web.config の内容は以下のようになります。
  2. 「サイト」を右クリックし、「Web サイトの追加」をクリックします。
    blog_1.png
  3. 以下のように設定し、「OK」をクリックします。
    サイト名 Another Web Site(何でも構いません)
    物理パス %SystemDrive%\inetpub\wwwroot
    種類 http
    IP アドレス 未使用の IP アドレスすべて
    ポート 81

blog_2.png
4. 「Another Web Site」を右クリックし、「仮想ディレクトリの追加」をクリックします。
blog_3.png
5. 以下のように設定し、「OK」をクリックします。

エイリアス imart
物理パス C:\imart

blog_4.png
6. 「Default Web Site」、「URL 書き換え」、「機能を開く」をクリックします。
blog_5.png
7. 「サーバ変数の表示」をクリックします。
blog_6.png
8. 「追加」をクリックします。
blog_7.png
9. 「サーバー変数名」に「HTTP_X_COM_EXAMPLE_BASE_URL」を入力し、「OK」をクリックします。
blog_8.png
10. 同様に「Another Web Site」の「許可されたサーバ変数」に「HTTP_X_COM_EXAMPLE_BASE_URL」を追加します。
11. 「Another Web Site」、「URL 書き換え」、「機能を開く」をクリックします。
blog_9.png
12. 「ReverseProxyInboundStatic」、「ReverseProxyInboundDynamic1」、「ReverseProxyInboundDynamic2」が設定されていることを確認してください。
blog_10
存在しない場合、「Default Web Site」に存在する上記三つの URL 書き換え規則の設定を Another Web Site に追加してください。
13. IIS を再起動してください。
14. 以下を確認してください。

【参考】さらに汎用的な方法について

・WebServer が IIS の場合はこちら
・WebServer が Apache の場合はこちら

-開発Blog

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

intra-mart Advent Calendar 2013 第11日:Resin HealthSystemのご紹介

この記事は、intra-mart Advent Calendar 2013 第10日の記事です。 Resinは、アプリケーションが動作しているResin本体とは別にwatchdogという監視サーバが動 …

no image

IM-共通マスタ CSVスナップショットインポートのパフォーマンス検証

WebPlatform/AppFramework Ver.7.2 パッチ6の要件16570にて、IM-共通マスタからアプリケーション共通マスタへの同期処理のパフォーマンス改善を行い、下記効果を確認しま …

no image

intra-mart Advent Calendar 2013 第4日:ViewCreatorの表が色とりどりになってますよ!

この記事は、intra-mart Advent Calendar 2013 第4日の記事です。 昨日の記事で、ViewCreatorで、計算式を使って、データの値をいろいろと加工できることをご紹介しま …

no image

iCEC2011 スマートフォン対応について

4/26に開催された「intra-mart Certified Evangelist Conference 2011(iCEC2011)」での講演資料を公開します。 スマートフォン対応について 01_ …

no image

ISPの小技

今回は、ISPのスケジュール機能の小技に関して紹介します。 以外に知られていない機能で、Ver7.0、7.1で、スケジュールのコピー機能があります。 マウス操作だけでスケジュールのコピーができますので …