CGIへのアクセス制限と予備のCGIへのリダイレクト方法について

このQ&Aのポイント
  • CGIへのアクセス制限やエラーメッセージ表示の方法をご紹介します。
  • CGIへのアクセス制限は、排他処理やアクセス数の制限などを利用して実現します。
  • また、サーバダウン時には予備のCGIにリダイレクトすることで対応できます。
回答を見る
  • ベストアンサー

CGIへのアクセスが集中した場合にアクセスを一時的に制限したり、エラーメッセージを表示したり、予備のCGIに飛ばす方法。

CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。 また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。 例えば、Aサーバのmain.cgiを動作させたい場合に、まずBサーバのpre.cgiにとばし、Bサーバのpre.cgiからAサーバのmain.cgiへのアクセスを試み、Aサーバがダウンしている為にアクセスに失敗した場合に、Bサーバ内のerroor.htmやsub.cgiに飛ばすことなどはできるのでしょうか。 できれば、CGI(perl)で実現したいのですが、有効な方法がございましたら、恐れ入りますが、教えていただけないでしょうか。もしも可能でしたら、簡単なサンプルのスクリプト等を添えていただけると大変助かります。何卒よろしくお願いいたします。

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

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

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

>、FastCGIやmod_perlというのはどのようなものでしょうか。 Googleあたりで調べれば、かなりヒットするので、まずは調べてみて下さい。。。 ↓本家 http://www.fastcgi.com/ http://perl.apache.org/ WWWサーバに組み込む形になるので、独自サーバじゃないと使えませんけど。 レンタルサーバの中には、使えるところもあるらしいですよ。 >大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか ないと思います。(^^; というか、Aサーバ上に常駐(Unixならcronか)させたプログラムに、定期的にBサーバに通知させようと考えたわけですが、サンプルのようなものはどこかにあるのかもしれませんけど、見つけるのは大変でしょう。 いずれにしても、BサーバのCGIでAサーバの状態を取得し、その後AサーバのCGIを呼び出すのだとすると、今度はBサーバの負荷が高くなります。 負荷を軽減したり、サーバダウンした場合の対処方法として色々講じようとするのも良いのですが、あまり色々考えすぎると、返って別の部分で負荷が高くなったり、広げすぎて収拾がつかなくなったりするものです。 個々のCGIの処理を軽くするようにするなど、CGI側の工夫で回避できる部分は多いので、そちらがまず先かと思います。(余分な処理をさせない、より速いアルゴリズムを選ぶ、2度の処理に分けられるなら2つのCGIに分け2ステップで処理するetc)

oomiyaji
質問者

お礼

ありがとうございます。 大変残念なのですが、FastCGIやmod_perlにつきましては、私が利用させて頂いてるレンタルサーバでは使用できないかもしれません。将来、レンタルサーバを選ぶときの基準とさせていただこうと思っております。 ところで、より速いアルゴリズムを選ぶ、2ステップで処理するといったテクニックについて、記述しているURLなどはご存知でしょうか。もしもご存知でしたら教えていただけないでしょうか。 例えば、フォームから送信があった場合に専用ファイルでロックした後4つのファイルにデータを順番に書き込む、sendmailを利用するといったCGIを作っているのですが、かなり負荷がかかるものでしょうか。現在、ウィンドウズ環境で作成・試験し、その後レンタルサーバで動かしているのですが、負荷をどのように測ればよいか分かりません。もしも簡単に測る方法などございましたら、教えていただけると助かります。何卒よろしくお願いいたします。

その他の回答 (1)

noname#227796
noname#227796
回答No.1

>CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイト これは、恐らくWWWサーバ(Apahce等)の設定で、プロセス数等を制限しているのだと思います。 ↓ちょっとうまいのが見つからなかったのですが、参考までに。 http://www.apache.jp/jdocs/tune/ 独自サーバを立てているか、レンタルサーバで設定可能な場合にしか使えないと思いますが。 それから、負荷が高くて困っているのならば、CGIのプロセス起動時のオーバーヘッドを解消するために、(Apacheなら)FastCGIやmod_perlを使用するのも手だと思います。 >例えば、Aサーバのmain.cgiを動作させたい場合に、まずBサーバのpre.cgiにとばし やりようはあると思いますが、ちょっと思いつきません。 ただこれだと、CGIが実行されるたびにトラフィックが発生しますし、Bサーバがダウンしたときはどうするんだ、という問題もありますので、あまり得策ではないような気がしますが。 やるのであれば、Aサーバ側から定期的にサーバが生きてることをBサーバ側に知らせ、Bサーバ側ではそれを受け取って、ローカルのファイルなりなんなりに状態を記録、BサーバのCGIではそれを参照し、Aサーバの生き死に(一定時間更新されていなければ死んでるとか)を判断するようにするとか。。。

oomiyaji
質問者

お礼

ご教授ありがとうございました。URLまでいただき、大変感謝しております。また、一度にいろいろと質問してしまい、お手間をとらせてしましたことをお詫び申し上げます。 >WWWサーバ(Apahce等)の設定で、プロセス数等を制限しているのだと思いま す。 やはり、サーバで設定しているのですね。 残念ながら、当方、レンタルサーバのため、設定ができません。ちなみに、FastCGIやmod_perlというのはどのようなものでしょうか。勉強不足で申し訳ありませんが、教えていただけるとありがたいです。 >Aサーバ側から定期的にサーバが生きてることをBサーバ側に知らせ・・ 大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか。もしも可能でしたら、当方初心者の為、教えていただけると大変助かります。 お手数をおかけしますが、よろしくお願いいたします。

関連するQ&A

  • CGIから別サーバーのCGIの呼び出し

    以下の二つのサーバーでCGIを動作させようと考えています。  サーバーA:ユーザーからアクセスできる。  サーバーB:サーバーAからアクセスでき、ユーザーからはアクセスできない。 この環境で (1)サーバーAでリクエストを受け、簡単な処理をする。 (2)サーバーA上のCGIからサーバーB上のCGIを呼び出す。 (3)サーバーB上で処理(etc. メールの送信)を行い、処理結果をサーバーAのCGIに返す。 (4)サーバーA上で簡単な処理を行い、結果をユーザーに表示する というような処理を考えています。 perlでは、このような処理を実装することは可能でしょうか? サーバーAからサーバーBにあるスクリプトファイルを読み込んで、サーバーAで実行するということはできそうなのですが、サーバーB上のCGIはサーバーBで実行するというようなことができるのかがわかりません。 初心者的な質問で申し訳ありませんが、よろしくお願いします。

    • ベストアンサー
    • CGI
  • アクセス人数制限CGIについて。

    アクセス人数制限CGIについて。 お世話になります。 特定ファイルに同時アクセスする人数を制限して、制限を越えたら 「しばらくお待ちください」みたいなメッセージを表示するCGI、 あるいは他の方法でもよいのですが、何か方法があるでしょうか。 理由は150Kbps約60分のストリーミングファイルを公開したいのですが、 レンタルサーバのデーター転送制限の関係で、2人までの同時アクセスは セーフで、3人になると転送制限を超えてしまいアウト。サーバ屋さんから 怒られてしまいます。 なんとかこのファイルを公開していので、皆さんのお知恵を拝借させて ください。

    • ベストアンサー
    • CGI
  • たびたび表示される”CGI Error”

    フリーのCGIや、PHPをレンタルサーバで動かしているんですが、 以前は問題なかったのに、最近下記のエラーメッセージが頻繁に出る用になりました。 --------------------- CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: --------------------- しかも、再読み込みをしなおせば、CGIもPHPも動作しています。 これはプログラム側の問題でしょうか? それともサーバ側の問題でしょうか? ご存知の方、教えてください~~。

    • 締切済み
    • CGI
  • CGIでアクセス制限をしたい

    htmlタグはHPを3本立ち上げているので、 何とか30%ぐらいは理解したと思っていますが、 現在CGIを使ったアクセス制限を作りたいと悪戦苦闘しています。 参考書で紹介しているKENT WEBさんのアクセス制限{LOG IN} で始めたのですが、http://www.kent-web.com/  途中に# 認証ページからの戻り先 (index.htmlなど)と言う記述が あり、戻り先って何だと悩んでいます。  現在のアクセス制限はjavaでの制限を使っていますが、 index.html⇒password.html⇒main.htmlと進んでいくので、 $home "../main.html";と記入しましたが上手く行きません。 (../index.htmlも試しました)ffftpからのアスキー送信や パーミッションも間違いないと思いますが、 結果は「Forbidden 閲覧できません。」このページは、 ホームページ開設者が閲覧することを許可していないため、 ご覧になることができませんです。 長々と書きましたが当方はniftyのcgiです。 解決方法ご教授願います。

  • CGIのアクセス制限について

    環境は windowsXPHome SP3 / Apache2.2 / ActivePerl5 / (MySQLを使う予定) です。 htdocs\index.html htdocs\ddd\aaa.cgi htdocs\ddd\bbb.cgi のようなディレクトリ構成で、httpd.confは、htdocs以下を公開する設定になっていて <Directory "D:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ddd"> AddHandler cgi-script .cgi Options +ExecCGI </Directory> を指定しました。 これを自宅サーバーとして公開する場合、外部からはindex.htmlにアクセスできるようにして、 aaa.cgiやbbb.cgiはindex.htmlからリンクやformのactionから呼び出されてからしか実行できない (直接cgiのurlを指定して開けない)ようにするにはどうすればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • cgi-binディレクトリにアクセス制限をかける方法

    ISPにwakwakを使用しているのですが、cgi-binディレ クトリ配下に置いてある掲示板に対してアクセス制限 をかける方法が無いか探しています。 wakwakの仕様で ・cgiはcgi-binディレクトリ配下にのみ設置可 ・htaccessはcgi-binディレクトリ配下では動作不可 というようになっておりお手上げ状態です。 htaccessで制限出来るディレクトリにリンク用のhtml を置いて、そこからじゃないとcgiディレクトリに飛べ ないようにすればと思ったのですが、どうもcgi-bin ディレクトリ(というかCGIに対して)直接アクセス制限 が出来るものが見つからず困っております。 どなたかお詳しい方がいらっしゃいましたらヒントだけ でも頂けると幸いです。

  • ACCESS2003エラーメッセージ対応について

    ACCESSでテーブルAのデータをテーブルBに貼り付けをしようとしたところ 「現在ロックされているので、更新できませんでした。」 というメッセージが表示されました。 そのファイルは会社のサーバーにあるのですが、確実に他の人は使用していません。 どのような対処をすればよいのでしょうか。

  • 自分のHPにセキュリティ(アクセス制限)をかける方法

    自分のHPにセキュリティ(アクセス制限)をかける方法を教えて下さい。 (1).htaccessによるパスワード制限 (2)パスワードのみによるCGIのアクセス制限 (3)ジャバスクリプトによるアクセス制限 などいろいろあると思います。 私は、パナソニックHI-HOのWebサーバーですが、(1)がうまく動作できませんでした(設定ミスの可能性あり)。通常(1)(2)(3)でつかるのでしょうか?また使えない場合その他に良い方法を教えていただけないでしょうか?

  • accessで未入力の場合にメッセージボックスを表示したい

    アクセスのフォーム(テキストボックス)が、未入力の場合メッセージボックスを表示したいです。 【追加条件】 1.テーブルで”入力規則”、”エラーメッセージ”は使わない。 2.vbaは使わない。 3.マクロの”条件”のみで処理する。 ---------------------------------------------------- vbaを使っての方法はあるみたいですが、マクロだけで入力判定をして、未入力の場合にメッセージボックスを表示する方法はないでしょうか?

  • ぷららのCGIサーバーでアクセス解析をする場合に…

    プロバイダ「ぷらら」のサービスでホームページを公開しています。 無料配布CGIを利用してアクセス解析をしたいのですが、 ぷららの場合、通常のhtml等をアップロードするサーバとは別途にCGI専用のサーバがあります。 つまりhtmlや画像などは「www7.plala.or.jp/×××」へ転送し、 CGIなどは「cgi23.plala.or.jp/×××」へ転送します。 なのでアクセスログはCGIサーバのアクセスログが取れてしまいます。 この場合、自分でCGI自体を改造しないと行けないと思うのですが、 どこをいじったらいいのかすらわかりません。 アドバイス、または解説サイトなどがありましたら教えて下さい。 もしくは、そういったケースに対応しているCGIを配布しているサイトを教えて下さい。 無料サービスでも良いのですが、バナーや広告が好きではないので…、 カウンタは取りつけないで各ページ毎のヒット数などが知りたいのです。 でももし良さそうな無料サービスがあればそれも教えてほしいです。 宜しくお願いします。 ※下記の「グラフ式アクセスログ」使用中です。 http://www.01nni.com/free.html

    • 締切済み
    • CGI