アプリケーションサーバへのCGI設置とサーバー構成について

このQ&Aのポイント
  • アプリケーションサーバへのCGI設置とは、リバースプロキシとアプリケーションサーバを分けて、動的ページの生成をアプリケーションサーバにまかせる仕組みです。
  • リバースプロキシにCGIファイルを置いて、アプリケーションサーバのCPUだけを借りることができます。
  • アプリケーションサーバにCGIを置く場合、リバースプロキシに置いてあるHTMLでは、CGIの場所を指定する必要があります。また、CGIではHTMLの生成場所を指定することも可能です。
回答を見る
  • ベストアンサー

アプリケーションサーバへのCGI設置

サーバーをリバースプロキシと アプリケーションサーバに分けて cgiの動的ページの生成などは アプリケーションサーバにまかせると言う仕組みに 興味を持っているのですが イマイチ仕組みが見えてきません。 あまりに初歩的な質問でしょうが 上記の様なサーバー構成の場合 CGIファイル自体はどちらのサーバーに置くのですか? リバースプロキシに置いて アプリケーションサーバーのCPUだけ借りるのですか? アプリケーションサーバに置く場合 リバースプロキシに置いてあるHTMLでは CGIの場所をどの様に指定するのでしょうか? またCGIではHTMLの生成場所をどの様に指定 するのでしょうか? 分かる方がいらっしゃいましたら よろしくお願い致します。

  • CGI
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ご質問の意図が理解できました。説明不足ですみません。 お知りになりたいのはmod_proxyとmod_rewriteの組み合わせによる動作のようですね。 mod_proxyは具体的に通信を各サーバーに振り分ける役割だと思ってください。 mod_rewriteはどのサーバーに具体的に振り分けるかを決定する役割を持っていると思ってください。(実は機能的には違うのですが,いただいたURLの説明を読むと,そのことで使用しているみたいなので・・・) >>上記の様なサーバー構成の場合 >>CGIファイル自体はどちらのサーバーに置くのですか? リバプロ側には極力負担をかけたくないので,このような構成の場合にはCGIなど重い処理が走るものはすべてアプリケーションサーバー側(気軽に台数を増減できる)におきます。 >>リバースプロキシに置いて >>アプリケーションサーバーのCPUだけ借りるのですか? そういえないこともありませんが,アプリケーションサーバー側でCGIを設置するのでそのCGIを動作させるPerlなどの言語もアプリケーションサーバー側で動作していますから,「CPUだけ借りる」という表現よりも「CGI部分の処理だけをアプリケーションサーバー側に行わせる」という表現のほうがより近いと思います。 >>アプリケーションサーバに置く場合 >>リバースプロキシに置いてあるHTMLでは >>CGIの場所をどの様に指定するのでしょうか? 一台のサーバーにHTMLやCGIをおくのと同じ表現方法です。 >>またCGIではHTMLの生成場所をどの様に指定 >>するのでしょうか? これも上記と同様,一台のサーバーにHTMLやCGIをおくのと同じ表現方法です。 わかりづらいので,上記2つのご質問を簡単に説明すると www.testdomain.com というドメインのドキュメントルートにindex.htmlがあるとします。 index.htmlには,ひとつの画像とひとつのCGIが指定されているとします。 この環境にはサーバーが2台あり,ひとつはmod_rewriteとmod_proxyを組み込んであるapacheが動作しておりこれを1号機とします。もうひとつはmod_perlが組み込んであるapacheが動作しているとし,これを2号機とします。 index.htmlとimgは前者,CGIは後者に保存されているとします。 クライアントが「http://www.testdomain.com/index.html」を呼び出すと,サーバーはとりあえずindex.htmlのテキスト文書をクライアントに返します。 受け取ったクライアントは,返却されたHTMLの中身を読み取り,とりあえず画像ファイルを読み出しに行きます。 index.htmlで画像ファイルを./img/test.pngなどと指定している場合には,リクエストは「http://www.testdomain.com/img/test.png」とリクエストされます。 このリクエストを受け取ったapacheはmod_rewriteに解析を依頼します。mod_rewriteの定義で/img/を含むURLがリクエストされた場合には,そのリクエストは1号機の方で処理するように指定がしてあると,1号機のimgフォルダにあるtest.pngを返却します。 また,クライアント側でユーザが,CGIを動作させるような操作をした場合リクエストは「http://www.testdomain.com/cgi-bin/test.cgi」などとなるわけですが,前者と同様mod_rewriteの定義で/cgi-bin/を含むURLがリクエストされた場合には,そのリクエストは今度は2号機の方で処理をするように指定がしてあると,そのリクエストは2号機のapacheに受け渡され,2号機のCGIコンテンツが処理を行い,リクエストを1号機のリバプロ経由でクライアントに返却します。 上記のように,クライアント側からは1台のサーバーで動作しているようにしか思えない,URLの仕方でも,実は2台のサーバーで処理を行うことが可能となります。 後は上記の応用だけなので,CGI専用やIMG専用,動画専用などのサーバーを立てておき,それぞれの処理を専用マシンに行わせるであるとか,が可能となります。 以上です。

bouzu01
質問者

お礼

お礼が遅くなって申し訳ありません。 非常に丁寧な解説を頂いて恐縮です。 複数台のサーバーで処理を分散する形がだいぶ見えてきた気がします。 休みに日に自宅サーバをいじって遊んでみようと思います。 ありがとうございました。

その他の回答 (1)

回答No.1

一般的なリバースプロキシーは本当にプロキシーをしてくれるだけなので,リバースプロキシー側にHTMLやCGIをおくことはありません。 上記の例で言うと,同じ動きをするアプリケーションサーバーを複数台立てて,外部からのアクセスを順次違うサーバーに行わせるというようなことを行いたい場合に,リバプロを使用します。 何かと勘違いされているのではないでしょうか?

bouzu01
質問者

お礼

ご回答ありがとうございます。 http://www.thinkit.co.jp/free/article/0610/1/1/ 上記の記事を読んで興味を持ったのですが この記事では、リバースプロキシーに ウェブサーバも兼用させている事例の様です。 ご回答によるとCGIはアプリケーションサーバーに置くとの事ですが その際のCGIからHTMLをはき出す際の場所の指定や その逆にHTMLからCGIを呼び出す際の場所の指定は 具体的にどの様に行うのでしょうか? 引き続きご存知の方がいらっしゃいましたら、よろしくお願い致します

関連するQ&A

  • CGI設置時のpublic.html等の意味。

    皆様初めまして。 この度、レンタル掲示板から、レンタルサーバ+CGI掲示板に移行する事としました。 HTMLの知識は殆ど理解しているつもりで、レンタル掲示板やレンタルカウンタやJavaScriptの組み込み方法も問題ありません。 CGIに関しては完全な初心者の為、配布サイトからDLするして対応しています。 ここからが設置の苦労と苦難の連続でした。 あらゆるサイトを読みまくり勉強して、pealパス設定、パーミッション、文字コード、FTPソフトやエディターの問題点はクリアしました。 しかし、設置方法で行き詰まったのが、「ディレクトリのパス」です。 いくら調べても挑戦しても解決に辿り着きません。 ます、どのCGI配布先の説明文にも必ず書いてある「構成図」の見方が分かりません。 一段づつ右にズレて行くのは階層構造を示している事は分かりました。 そこで質問させて頂きます。 質問(1) 殆どのCGI構成図の一番上部には、 /home/USER/ と書いてありますが、これはフォルダ「home」を作成して、その中に「USER」との名前のフォルダを作成すると言う意味でしょうか? 過去に設置に成功した掲示板のCGIは、これを気にせず、“何の指定も無い一番上の階層に”設置しただけで何の問題もなく動きました。 因みに、私がレンタルしたサーバーは「ポケットサーバー」の有料プランです。 参考:http://www.pocket-server.com/service.html 質問(2) 同様にして、構成図の2~3段目付近に書いてある、 public_html / index.html は何を意味しているのでしょうか? フォルダ「public_html」の中に、ファイル「index.html」を作成すると言う意味でしょうか? 質問(3) フォルダ「cgi-bin」と「public.himl」について。 私なりに色々と勉強した結果、「(cgi-bin)は、一部のプロバイダでは、このフォルダ以下にCGIを設置しなくてはならない」と書いてあります。 しかし、「ポケットサーバー」の仕様書では「CGIはどこに設置しても可能」との事でしたので、私は掲示板CGIを「どのフォルダに設置」しても問題なく動きました。 同様に「public.html」も、一部のプロバイダでは、このフォルダ内にHTMLファイルを設置しなくてはならない」と書いてあります。 これも同様、私の借りているサーバーでは、この指定も無くどこでも設置可能です。 そこで質問ですが、ポケットサーバーの様にフォルダ「cgi-bin」や「public.himl」の設置が不要なサーバーに、敢えて設置した場合のメリットやデメリットはありますか? また、この二つのフォルダは、元々何の為に有るのでしょうか? 質問(4) また、ポケットサーバーの様に仕様書上は「public.himl」が不要な場合でも、構成図には書いてある場合には、敢えて作成しなくてはならないでしょうか? 質問(5) 私がレンタルしているサーバーの初期状態のファイルマネジャーを見ると、そこにあるのは以下2つです。 ・ フォルダ:toiawase ・ ファイル:start-page.html 私は後者のstart-page.htmlをindex.htmlに変更してサイトのトップページを作成しました。 さらに、この2つに加えて、「○○bbs」や「○○mail」を言ったCGIを設置しました。 この様な構成で良いのでしょか?_ 質問(6) 今後の課題は、配布先Kent Webさんのパスワード制限用CGIである「Password Manager」です。 参考:http://www.kent-web.com/pwd/pwmgr.html このCGIの構成図を見ても、やはり一番上は「/home/USER/」と書いてありますが、この場合は“何と言うフォルダ”を作成しなければならないのでしょうか? 私の借りているサーバーに例えたら、どの階層に作れば良いのでしょか? 長文でわかりにくい説明で申し訳御座いませんが宜しくお願い致します。

  • CGIを一つのサーバーに置くには・・・

    こんにちは。 CGI初心者ですよろしくお願いします。 タイトル通りなんですが、サーバにCGIを置きたいのです。 the roomさんのCGI↓ ttp://dream.lib.net/room/ ttp://dream.lib.net/room/cgi/e_ranklink.html 例えば ttp://xxxxx.com/index.html で 二つのランキングサイトを作るには、 ttp://xxxxx.com/rank1/cgi-bin/ranklink/ranklink.cgi? ttp://xxxxx.com/rank2/cgi-bin/ranklink/ranklink.cgi? ディレクトリを分けてやればいいのでしょうか? あと ・他のサーバからのCGIへのアクセスが禁止されている(freeweb等) ・ファイル生成が出来るパーミッション設定が出来ない(基本的には 777。755等でも行ける場合あり) 以上の環境の方は、Ranking Link の設置・運営は不可能です。 また、サーバによってはランキングCGIの設置が禁止されている場合もあります。 よく確認してから設置を行ってください。 では、CGIの設定を行います。 とマニュアルで書いてありました。 ttp://www.asj.ne.jp/faq/index.html ↑のサーバーを使いたいのですが大丈夫でしょうか? もしだめだった場合いい有料サーバー教えてください。

    • 締切済み
    • CGI
  • リバースプロキシ使用時のSSL証明書について

    クライアント-(SSL)-リバースプロキシ-(SSL)-Webサーバ構成の場合、WebサーバにインストールするSSL証明書は自己署名で構わないのでしょうか? リバースプロキシ-(SSL)-Webサーバ間ではSSLクライアントはリバースプロキシですから、リバースプロキシというものが一般的に証明書の正当性チェックをしないものであれば問題ないと思うのですが、やはりリバースプロキシの仕様に依存するのでしょうか?

  • サーバーでCGIを動作させるには?

    自宅サーバーでCGIを動作させたいのですが、うまく動作しません。 ○サーバー環境 OS:Windows Server 2003 Web Edition SP1 CPU:Intel Xeon 2.8GHz メモリ:1GB RAM ○現在の状況 htmlは、問題なく動作してます。 cgiを実行すると、エラー404となります。 ○CGI動作にあたって行った作業 (1)ASPの実行を許可しました (2)Perl構成にあたり、ActiveState社のActivePerl-5.8.820-MSWin32-x86-274739.msiをダウンロードし、Dフォルダにインストールしました。 (3)IISマネージャで、「Webサービス拡張」→「Perl CGI Extension」を許可しました。 (4)IISマネージャで、「Webサービス拡張」→「すべての不明なCGI拡張」を許可しました。 (5)実行アクセス権を設定するために、実行するCGIを格納するディレクトリの「実行アクセス許可」を「スクリプトおよび実行可能なファイル」としました。 (6)CGI拡張子と実行可能ファイルを関連付けるために、実行するCGIを格納するディレクトリの「アプリケーションの設定」→「構成」→「アプリケーションの拡張子」→「追加」で、 実行可能ファイル「D\Perl\bin\perl.exe"%s"%s」 拡張子「.cgi」としました。 ○CGIが動作するか確認するために、サンプルCGIを作成し、上記設定を行ったディレクトリ以下に配置しました。 ○結果 クライアントで、http://サーバー名/ディレクトリ名/ファイル名 と入力すると、エラー404 ページが見つかりません。と出ます。 間違った操作や、考えられる間違い箇所がありましたら、指摘ください。

  • CGIの設置の仕方が分かりません。

    CGIの知識はないため分かりやすく教えて頂けるとありがたいです。 http://www.cgis.biz/scripts/gif_counter/ ↑こちらのカウンターをページに挿入したいのですが設置の仕方が分かりません…。 メインで使用しているサーバーがCGI禁止のためCGI用のサーバーと2つ併用しているのですが、その場合は無理なんでしょうか…? メイン(CGI NG)このページにカウンターを設置したいです。 http://www.abc.com/top/ CGI用サーバー http://www.xxx.com/abc~/ 例えば上記のようなアドレスの場合、どのようにIMGタグは記述すればいいのでしょうか? 記述例を参考にやってみたのですが『src属性には表示するHTMLファイルから見た count.cgi への相対パスを記述します。』というのが意味がサッパリ分からなくて困ってます。

    • ベストアンサー
    • CGI
  • CGI設置方法について

    http://www.onamae.com 上記にてレンタルサーバーを借りましたが、HTMLファイルからcgiファイルを使ってフォームをメールデコードすることがうまくいきません。 ファイル本体自体がcgiファイルの場合はうまくいくのですが… パーミッションも指示どおりに変更しています。 どなたか教えてください。 http://cgi.akisawa.com/estimation.cgi ↑うまくいくところ http://www.akisawa.com/form.html ↑うまくいかないところ

    • ベストアンサー
    • CGI
  • CGIプログラム

    PHPに限らず、CGIプログラムで変数の内容を使ったHTMLコードを生成する場合に、単純にHTMLコードを出力しただけでは、正しいHTMLコードにならなかったり、CGIプログラムが動かないことがある。その場合には、どのようにしてその問題を回避するか。

    • ベストアンサー
    • CGI
  • CGIプログラム

    以下の問題について教えてください。 お願いします。 PHPに限らず、CGIプログラムで変数の内容を使ったHTMLコードを生成する場合に、単純にHTMLコードを出力しただけでは、正しいHTMLコードにならなかったり、CGIプログラムが動かないことがある。その場合には、どのようにしてその問題を回避するか。

  • HTMLの記述でプロキシーサーバを無効にできないものでしょうか。

    IE等のブラウザーの設定でプロキシーサーバが設定されている場合、1度開いたページがプロキシーサーバにキャッシュされてしまい、再度同一ページを開いた場合に本来更新されているべき内容が正しく表示されない事があると思います。これをCGI(HTMLの記述等)で回避する方法は無いものでしょうか。

  • CGI(Perl)を仮想サーバにインストールすることはできますか?

    CGI(Perl)を仮想サーバにインストールすることはできますか? お世話様です。 CGI(Perl)を仮想サーバにインストールすることはできますでしょうか? 仮想サーバの構成 OS:Windows Server 2008 (32bit 及び 64bit) インターネットインフォーメーションサービス:IIS7.0 仮想化ソフト:VMware ESX CGI: ActivePerl また、CGI(Perl)について、最低限のバージョンの指定はありますでしょうか? 上記に記載されていない、必要な機能、ソフトバージョン等があれば 教えてください。 よろしくお願いします。

    • 締切済み
    • CGI

専門家に質問してみよう