開発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

Apache Solr & IM-ContentsSearch

こんにちは、開発本部の大西です。 先日開催された、Open intra-mart勉強会で弊社コンサルティングチームの清さんが発表した Apache SolrとIM-ContentsSearchの資料を …

no image

intra-mart Advent Calendar 2013 第8日:im-Jugglingを利用せず、CUIでwarファイルを作成する方法

この記事は、intra-mart Advent Calendar 2013 第8日の記事です。 intra-mart Accel Platformは、im-Jugglingを利用してwarファイルを作 …

no image

アクセスセキュリティモジュール(ログイン画面)を利用しないでアプリケーションを構築する方法

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 ※以下はAPIリストからの抜粋です。 …

no image

intra-mart Advent Calendar 2013 第13日:ログイン後に任意の画面を開く方法

この記事は、intra-mart Advent Calendar 2013 第13日の記事です。 intra-mart Advent Calendar 2013 第1日目の「iAPでもiWPみたいにU …

no image

ApplicationRuntimeのライセンス数制限の仕様について

  ※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。   intr …