• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アプリケーションサーバへのCGI設置)

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

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

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

  • ベストアンサー
回答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

専門家に質問してみよう