ヘッダーをスキップ

Oracle HTTP Server 管理者ガイド
10g(10.1.3.1.0)

B31847-01
目次
目次
索引
索引

戻る 次へ

A Oracle Application Server Proxy Plug-inの使用

この付録では、Oracle Application Server Proxy Plug-in(OracleAS Proxy Plug-in)により、コンポーネントをサード・パーティのHTTPリスナーと併用する方法について説明します。OracleAS Proxy Plug-inは、UNIXおよびWindowsシステムの場合はSun ONE Web Server Enterprise Edition、Windowsシステムの場合はMicrosoft Internet Information Server(IIS)で動作し、Oracle Application Serverにリクエストを送信します。

関連資料

詳細な動作保証情報は、http://www.oracle.com/technology/products/ias/ohs/htdocs/plugincerts.htmlを参照してください。  

内容は、次のとおりです。

概要

OracleAS Proxy Plug-inはリバースHTTPプロキシです。図A-1のように、プラグインは受信HTTPリクエストをOracle Application Serverインスタンスに送信します。

図A-1    OracleAS Proxy Plug-in


画像の説明

このプロキシの仕組みは、サード・パーティのHTTPリスナーによりロードされる共有ライブラリであり、プラグインとして提供されます。このプラグインはサード・パーティのリスナーとともに提供されるAPIを使用して、モジュールがOracle HTTP Serverにプラグインされるのとほぼ同じ方法で、HTTPリクエストを直接処理します。

Oracle HTTP Serverでは、サード・パーティのリスナーで使用されているアドレスとポートを疑似実行できます。つまり、Oracle HTTP Serverにリクエストを送信するときに、リクエストの送信先である実際のホスト名とポートとは異なるHost: HTTPヘッダーを送信するように、プロキシを構成できます。これにより、ダウンストリーム・アプリケーションはリバース・プロキシの導入から保護されます。

OracleAS Proxy Plug-inのダウンロード

OracleAS Proxy Plug-inは、Oracle Application Server 10g Companion CDに含まれています。このCDは、Oracle Application ServerのCDパックに含まれています。

OracleAS Proxy Plug-inのインストール

OracleAS Proxy Plug-inをダウンロードした後、適切な構成ファイルと共有ライブラリをサード・パーティのリスナーがアクセスできるディレクトリに格納します。

Oracle Application Server 10g Companion CDでは、ファイルは、UNIXの場合は/plugins/solaris/、Windowsの場合は¥plugins¥win32¥にあります。

表A-1に、OracleAS Proxy Plug-inの共有ライブラリに関する情報を示します。

表A-1    OracleAS Proxy Plug-inの共有ライブラリ 
プラットフォーム  ファイル名  場所および説明  手順 

UNIX 

oracle_proxy.so 

oracle_proxy.soは、Sun ONEのWebリスナー用のOracleAS Proxy Plug-inファイルです。このファイルは、/plugins/solaris/sunoneディレクトリにあります。 

プラグインをリスナーにインストールするには、oracle_proxy.soを、リスナーが読取り権限と実行権限を付与されているディレクトリに格納します。 

Windows 

oracle_proxy.dll 

oracle_proxy.dllは、IISのWebリスナー用のOracleAS Proxy Plug-inファイルです。このファイルは、¥plugins¥win32¥iisディレクトリにあります。 

プラグインをリスナーにインストールするには、リスナーがアクセスできるディレクトリにoracle_proxy.dllをコピーします。 

oracle_proxy_sunone.dll 

oracle_proxy_sunone.dllは、Sun ONEのWebリスナー用のOracleAS Proxy Plug-inファイルです。このファイルは、¥plugins¥win32¥sunoneディレクトリにあります。 

プラグインをリスナーにインストールするには、リスナーがアクセスできるディレクトリにoracle_proxy_sunone.dllをコピーします。 

Application Server Controlコンソールの使用

Oracle Application Serverをインストールすると、Application Server Controlコンソールを使用してOracle HTTP Serverを管理できます。ただし、Oracle HTTP ServerのかわりにSun ONEまたはIISの使用を選択した場合は、Application Server Controlコンソール上でOracle HTTP Serverを表示しないように無効にすることをお薦めします。

Application Server Controlコンソールを使用したOracle HTTP Server以外のリスナーの監視または管理は、Oracleではサポートされません。

関連資料

  • 『Oracle Enterprise Manager概要』

 

OracleAS Proxy Plug-inの構成

OracleAS Proxy Plug-inの構成ファイルは1つで、このファイルによりプロキシ機能が制御されます。Webサーバーのファイル・システムに構成ファイルが存在する場合は、その機能が有効になります。

また、サード・パーティのリスナーに対してプラグインを有効にするには、そのリスナー固有の構成ファイルを変更する必要があります。

プロキシ・サーバー定義ファイル

プロキシ・サーバー定義ファイルは、サード・パーティのリスナーが読取り可能なディレクトリに置く必要があります。システム上の便利な場所にproxyというディレクトリを作成し、プロキシ・サーバー定義ファイル、プロキシ共有ライブラリ・ファイルおよびプロキシ・ログ・ファイルを配置すると、簡素化できます。

プロキシ・サーバー定義ファイルの内容は次のとおりです。詳細は、プロキシ構成ファイルのパラメータを参照してください。

このファイルは、好みのテキスト・エディタで作成できます。oproxy.serverlistパラメータには、サーバー名を少なくとも1つ指定する必要があります。指定しないと、プロキシは動作しません。

例A-1は、サンプルのプロキシ・サーバー定義ファイルです。

例A-1    サンプル・プロキシ・サーバー定義ファイル

# This file defines proxy server behavior. 
#
# Server names that the proxy plug-in will recognize. 
oproxy.serverlist=ias1

# Hostname to use when communicating with a specific server. 
oproxy.ias1.hostname=oasdocs.us.oracle.com

# Port to use when communicating with a specific server. 
oproxy.ias1.port=7777

# Description of URL(s) that will be redirected to this server. oproxy.ias1.urlrule=/*

プロキシ構成ファイルのパラメータ

この項では、次のプロキシ構成ファイルのパラメータについて説明します。

oproxy.serverlist

プラグインで認識されるサーバー名をすべてリストします。

カテゴリ   

パラメータ・タイプ 

文字列リスト 

使用可能な値 

リクエストの送信先となるOracle HTTP Serverごとに1つのサーバー名をカンマで区切ったリスト。サーバー・リスト内のすべてのサーバーは、ファイルにも定義する必要があります。  

デフォルト値 

なし。プロキシを機能させるには、少なくとも1つはサーバー名を指定する必要があります。 

例 

oproxy.serverlist=ias1,ias2 

oproxy.servername.hostname

特定のサーバーとの通信時に使用するホスト名を定義します。

カテゴリ   

パラメータ・タイプ 

文字列 

使用可能な値 

有効なホスト名 

デフォルト値 

なし 

例 

oproxy.ias1.hostname=www1.us.oracle.com 

oproxy.servername.port

特定のサーバーとの通信時に使用するポートを定義します。

カテゴリ   

使用可能な値 

有効なポート値 

デフォルト値 

80 

例 

oproxy.ias1.port=7777 

oproxy.servername.alias

クライアントからサード・パーティのHTTPリスナーへのアクセスに使用するホスト名とポートを定義して、プロキシの疑似実行機能をサポートします。このパラメータを定義すると、この値がHost: HTTPヘッダーとして渡されます。定義しない場合は、実際に通信先となるマシンのホスト名とポートが送信されます。

カテゴリ   

パラメータ・タイプ 

文字列 

使用可能な値 

host:port 

デフォルト値 

oproxy.servername.hostname:oproxy.servername.port 

例 

oproxy.ias1.alias=www.oracle.com:80 

oproxy.servername.resolveall

ホスト名を解決するために、すべてのリクエストについてプロキシ・プラグインをバックエンド・サーバーに送ります。これにより、プロキシ・プラグインとバックエンド・サーバー間のDNSベースのフェイルオーバーまたはルーティングが可能になります。このパラメータを使用すると、すべての受信リクエストについてDNSサーバーへの送信のコストが発生するため、ホスト名からIPアドレスへのマッピングが動的に変わる場合のみ使用してください。

カテゴリ   

使用可能な値 

trueまたはfalse 

デフォルト値 

false 

例 

oproxy.ias1.resolveall=true 

oproxy.servername.urlrule

このサーバーにリダイレクトされるURLまたはURLセットを記述します。指定したサーバーには、任意の数のurlruleプロパティを割り当てることができます。

カテゴリ   

パラメータ・タイプ 

文字列 

例 

oproxy.ias1.urlrule=/foo/* 

完全一致、コンテキスト一致または拡張子一致という3種類のルールを使用できます。

OracleAS Proxy Plug-inの動作の定義

プロキシ・サーバー定義ファイル内で、プラグインにプロキシするサーバーとURLを定義します。

  1. ファイルの1行目に、プラグインで使用できるすべてのサーバーのリストを指定します。次に例を示します。

    oproxy.serverlist=ias1,ias2
    
  2. 各サーバーの関連プロパティ(ホスト名、ポートおよびサーバー別名)を設定します。次に例を示します。

    oproxy.ias1.hostname=myhost.us.oracle.com
    oproxy.ias1.port=7777
    oproxy.ias1.alias=www.oracle.com
    

    ホスト名は必須です。ポートを指定しないと、80が割り当てられます。別名の値を指定しないと、指定したホスト名とポートの組合せが使用されます。別名により、バックエンド・サーバーは、クライアントからサード・パーティのリスナーに配信されるHTTPのHost: ヘッダーと完全一致のヘッダーを持つリクエストを受信できます。

  3. urlruleパラメータを設定して、サーバー間のリダイレクションを指定します。たとえば、次のルールがあるとします。

    oproxy.ias1.urlrule=/*
    

    このルールでは、プロキシされるすべての受信リクエストがサーバーias1のWebサーバーにマップされます。これらのルールは、URLの完全一致、コンテキスト一致または拡張子ベースという3つの形式で指定できます。完全一致の場合は、次のように1つのURLが1つのサーバーに厳密にマップされます。

    oproxy.ias1.urlrule=/my/path/index.html
    

    この例では、/my/path/index.htmlへのアクセスのみがプロキシ用にマップされます。次にコンテキスト・ルールの例を示します。

    oproxy.ias1.urlrule=/app1/*
    

    この例では、/app1で始まるURLがすべてマップされます。次のような拡張子ベースのルールがあるとします。

    oproxy.ias1.urlrule=/*.jsp
    

    この例では、末尾が.jspのURLがすべてマップされます。

    マップされたURLに送信されるすべてのリクエストは、HTTP/1.1経由で指定のサーバーにプロキシされます。

OracleAS Proxy Plug-inを使用するためのSun ONEリスナーの構成

この項では、UNIXおよびWindowsシステム上のSun ONE Enterprise Serverリスナーに関するプロキシ・プラグインの構成手順について説明します。


注意

Windows上でSun ONEリスナーを構成する場合は、すべてのパスにスラッシュ(/)を使用してください。

Sun ONEのデフォルト構成ファイルでは、URI /servletに対するすべての受信リクエストがSun ONEのサーブレット・ハンドラにルーティングされます。Sun ONEサーバーの構成の設定がOracleAS Proxy Plug-inにより上書きされることはありません。OracleAS Proxy Plug-inへのURLマッピングが、Sun ONEサーブレット・エンジンへのURLマッピングとは異なることを確認する必要があります。  


  1. Sun ONEリスナーの/configディレクトリで、magnus.confファイル(バージョン6)またはobj.conf(バージョン4)を開きます。

  2. load-modules行を追加します。

    UNIXの場合:

    Init fn="load-modules" shlib="/path/oracle_proxy.so" 
    funcs=op_init,op_objecttype,op_service
    

    Windowsの場合:

    Init fn="load-modules" shlib="/path/oracle_proxy_sunone.dll" 
    funcs=op_init,op_objecttype,op_service
    

    /path/は、プラグインの共有ライブラリへのパスです。この行では、リスナーに対してプロキシ共有ライブラリの格納場所と、このライブラリで公開されているファンクションが示されています。

  3. 構成パラメータ行を追加します。

    Init fn="op_init" server_defs="/path/servers" log_file="/path/oproxy.log" 
    log_level=error
    

    /path/は、プロキシ・サーバー定義ファイルとログ・ファイルへのパスです。プロキシ・サーバー定義ファイルには、プロキシ・プラグインで通信可能なサーバーに関するすべての構成情報が含まれています。プラグインからのメッセージを記録するためのログ・ファイルとログ・レベルも指定できます(オプション)。

    関連項目

    詳細および例は、「プロキシ・サーバー定義ファイル」を参照してください。 

  4. obj.confファイルの<Object name=default>セクションで、ObjectTypeで始まる他のすべての行の前に次の行を追加します。

    ObjectType fn=op_objecttype
    
  5. Serviceで始まる他のすべての行の前に、次の行を追加します。

    Service type="oracle/proxy" fn="op_service" 
    
  6. GUIまたはシェル・スクリプトを使用してリスナーを起動します。

OracleAS Proxy Plug-inを使用するためのIISリスナーの構成

この項では、Windowsシステム上のIISリスナーに関するプロキシ・プラグインの構成手順について説明します。この処理には、Windowsレジストリ・エントリの作成とIIS管理コンソールを使用したディレクトリおよびフィルタの追加が必要です。プラグインの構成後にリスナーを再起動する必要があります。

プラグインを構成するには、次の手順を実行します。

  1. 「スタート」メニューから「ファイル名を指定して実行」を選択します。

  2. 「ファイル名を指定して実行」ダイアログ・ボックスにregeditと入力し、「OK」をクリックします。

    「レジストリ エディタ」ウィンドウが表示されます。

  3. 「レジストリ エディタ」ウィンドウで、HKEY_LOCAL_MACHINEフォルダを開きます(名前の前の「+」をクリックします)。

  4. SOFTWAREフォルダを開きます(名前の前の「+」をクリックします)。

  5. ORACLEフォルダをクリックします。

  6. 「編集」メニューから「新規」、次に「キー」を選択します。

    ORACLEフォルダの下に新規キー #1という名前の新規フォルダが追加されます。

  7. キー名としてIIS Proxy Adapterを入力します。

  8. 「編集」メニューから「新規」、さらに「文字列」を選択します。

    右側のウィンドウに新規値 #1という名前の新しい値が追加されます。

  9. 値の名前としてserver_defsを入力します。

  10. 「編集」メニューから「変更」を選択します。「文字列の編集」ダイアログ・ボックスが表示されます。

  11. 「値のデータ」フィールドに、プロキシ・サーバー定義ファイルのフルパスを入力します。「OK」をクリックします。

  12. 手順8〜11で指定された手続きを使用してlog_filelog_levelを指定します。この手順はオプションです。

    1. 名前log_fileとログ・ファイルの格納場所(d:¥proxy¥proxy.logなど)を指定する文字列値を追加します。

    2. 名前log_levelと必要なログ・レベルを指定する文字列値を追加します。有効な値は、debug、inform、errorおよびemergです。

  13. IIS管理コンソールを使用し、oracle_proxy.dllと同じ物理パスを指定して、IIS Webサイトに新規の仮想ディレクトリを追加します。ディレクトリ名としてoproxyを指定し、実行アクセス権限を付与します。

  14. IIS管理コンソールを使用し、IIS Webサイトにフィルタとしてoracle_proxy.dllを追加します。フィルタ名はoproxyとし、その実行可能ファイルはoracle_proxy.dllを含むディレクトリ(d:¥proxy¥oracle_proxy.dllなど)を指す必要があります。

  15. IISを(IIS Serverを停止してから起動して)再起動し、oproxyフィルタが緑の上矢印でマークされていることを確認します。


    注意

    IISを再起動するには、コントロール パネルですべてのIISサービスを停止するか、コンピュータを再起動する必要があります。.dllを確実に再ロードさせるのは、この方法のみです。管理コンソール経由でIISを再起動する方法では不十分です。  


OracleAS Proxy Plug-inの使用上の注意

この項では、OracleAS Proxy Plug-inの背後で動作するアプリケーションの開発時に注意が必要な開発および使用方法について重点的に説明します。また、その一部は、Oracle Application Server Web Cacheの背後で動作するアプリケーションを使用可能にする場合にも関係があります。

トラブルシューティング

この項では、一般的な問題と考えられる解決策について説明します。

リスナーを起動できない場合

リスナーから適切なURLが返されない場合

プロキシ・サーバー定義ファイルの変更内容が反映されない場合

IISリスナーでページや文字が適切に表示されない場合

Sun ONEブラウザでIISページを表示しないでください。

Sun ONE 6.0で解析エラーが発生する場合

ポートを変更したりセキュリティを有効にしたりすると(SSLの場合)、サーバーからエラー・メッセージ「Unable to parse magnus.conf」が返されることがあります。

magnus.confファイル内で、コメントとInit行の前後に追加した行を削除します。

「ファイルが見つかりません」というエラーが発生する場合

存在することがわかっているファイルをコンテキストベースのurlruleパラメータを使用して取得するときに、リスナーから「Not Found」というメッセージが返される場合は、stripcontext=trueを設定する必要があります。

関連項目

「oproxy.servername.urlrule」 

部分URLリクエストで予期しない結果が返される場合

IISおよびSun ONEサーバーでは、URLの自動完了方式が異なります。http://servicemanhttp://serviceman/およびhttp://serviceman/index.htmlのリクエストでは、どのプラットフォームでも同じ結果が返されるとはかぎりません。oproxy.servername.urlruleパラメータを使用すると、この問題を回避できます。

関連項目

「oproxy.servername.urlrule」 

Sun ONEサーバーから/servletリクエストとともにServer Errorが返される場合

デフォルトのSun ONE構成では、/servletに対するすべてのURLリクエストが、固有のサーブレット・ハンドラにマップされます。この問題を解決するには、プロキシ・サーバー定義ファイルを編集するか、Sun ONE構成を変更する必要があります。

サーバーから返されるページ上のイメージ・リンクが壊れている場合

プロキシ・サーバー定義ファイル内(または同様の使用例)で正確なurlruleパラメータ(たとえばurlrule=/*.html)を使用している場合、サーバーは指定したページを取得しますが、他のリンクはページ内のインライン・イメージを含めてすべてユーザーに対して禁止されます。(stripcontext=trueを指定して正確なurlruleを使用すると、Server Errorが返されます。)

予期しないページが表示される場合

クライアント・ブラウザのメモリー・キャッシュを消去します。旧バージョンのSun ONEとIEでは、ページを毎回取得するように指定した場合でも、キャッシュ用のメモリーが割り当てられていない場合でも、ページがキャッシュされます(この動作を機能させるには、ブラウザを再起動する必要があります)。予期しないページが表示される場合は、ページをリフレッシュするか、再ロードしてください。

REMOTE_ADDRに予期しないIPアドレスが含まれている場合

通常、REMOTE_ADDRフィールドには、クライアント・マシンのIPアドレスが含まれます。一部のURLリクエストの場合は、環境内にプロキシ・サーバーがあると、このフィールドにプロキシ・サーバーのIPアドレスが含まれることがあります。

ネットワークのエントリ・ポイントにリダイレクトされる場合

バックエンド・サーバーがネットワークのエントリ・ポイントへのリダイレクトを返す場合は、次のどちらかを実行してください。最初の方法を実行することをお薦めします。

SSLリクエストが予期しない結果になる場合

プロキシ・プラグインでは、クライアントとプロキシ・ホスト間のSSL接続がサポートされますが、プロキシとバックエンド・サーバー間のSSL接続はサポートされません。後者を実装するには、SSL接続を受信してバックエンド・サーバーを非SSLモードで起動するように、リスナーを設定します。プロキシ構成を変更する必要はありません。


戻る 次へ
Oracle
Copyright © 2006 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引