Qrox

INDEX

Qroxとは?

Qroxはキュードプロキシ(Queued Proxy)です。
ブラウザからのリクエストを高速に受け溜めて"200 OK"を返し、溜められたリクエストは裏で順に処理されます。

以下のようなことが可能です。

動作環境
IIS 5.0, 5.1, 6.0, 7.0, 7.5 and later
パッケージ内容
Qrox.dll
ISAPI Extension本体
Qrox.setting
設定ファイル
注意事項
  1. 本ソフトウェアの利用は良識の範囲内でお願い致します。
  2. 本ソフトウェアの利用による損害の保証はお受けできません。
  3. 本ソフトウェアの利用は楽しんで行っていただきますようお願い致します。
インストール方法
IIS 5.0, 5.1
  1. "Qrox.dll" を目的のWebディレクトリのアプリケーションマッピングに登録。
    • "実行ファイル" に "Qrox.dll" を指定。
    • "拡張子" に ".*" を指定。
    • "動詞" に "すべての動詞" を指定。
    • "スクリプトエンジン" にチェック。
    • "ファイルの存在を確認する" のチェックをはずす。
  2. 以上で完了です。動作しない場合は以下をご確認ください。
    • パッケージディレクトリに "IUSR_{xxx}" の読み取り権限があるか。
IIS 6.0
  1. "Qrox.dll" を目的のWebディレクトリのワイルドカードアプリケーションマップに登録。
    • "実行ファイル" に "Qrox.dll" を指定。
    • "ファイルの存在を確認する" のチェックをはずす。
  2. IISの "Web サービス拡張" に "Qrox.dll" を追加し、許可する。
  3. アプリケーションプールを適切に設定する。
    • "リサイクル", "ワーカープロセス" はしないようにする。
    • "アイドルタイムアウト" はしないようにする。
  4. 以上で完了です。動作しない場合は以下をご確認ください。
    • パッケージディレクトリに "NETWORK SERVICE" の読み取り権限があるか。
    • パッケージディレクトリに "IUSR_{xxx}" の読み取り権限があるか。
IIS 7.0, 7.5
  1. "Qrox.dll" を目的のWebディレクトリのハンドラーマッピングに登録。
    • "ワイルドカードスクリプトマップの追加"をクリック。
    • "実行可能ファイル" に "Qrox.dll" を指定。
    • "名前" に "Qrox" などを指定。
  2. IISの "ISAPIおよびCGIの制限" に "Qrox.dll" を追加し、許可する。
  3. アプリケーションプールを適切に設定する。
    • "リサイクル", "定期的な間隔" はしないようにする。
    • "アイドル状態のタイムアウト"はしないようにする。
  4. 以上で完了です。動作しない場合は以下をご確認ください。
    • パッケージディレクトリに "SERVICE" の読み取り権限があるか。
    • パッケージディレクトリに "IUSR" の読み取り権限があるか。
利用方法

クライアントブラウザとアクセス対象となる本サーバーの間にQroxを配置してください。

┌──────┐        ┌──────┐        ┌──────┐   
│Browser     │        │Qrox        │        │Web Server  │─┐
│            │Enqueue │____________│Dequeue │            │  │
│            │───→│───→****│───→│            │  │
│            │←───│~~~~~~~~~~~~│  ───┤            │  │
│            │Quick!! │            │        │            │  │
└──────┘        └──────┘        └─┬────┘  │
                                                    └──────┘

Qroxの特性上、本サーバー(Web Server)のレスポンスをBrowserへ返すことはできません。
BrowserへのレスポンスはQroxが代理で先に済ませてしまいます。
代理レスポンスのコンテンツ内容は設定ファイルにて画像やテキストなどに設定可能です。
また、現在のQroxは GET,HEAD メソッドのみに対応しています。

動作中に設定ファイルを変更した場合はアプリケーションプールのリサイクルなどが必要です。

利用リファレンス
STAT (状況モニタリング)

サーバーの状況を返します。
コマンド名 "STAT" は設定ファイルで指定可能です。

リクエスト
STAT / HTTP/1.0

レスポンス
HTTP/1.0 200 OK content-length: 0 X-Queue-Total: {queue-total} X-Counter-CMD-Stat: {counter-cmd-stat} X-Counter-CMD-Queue: {counter-cmd-queue} X-Counter-CMD-Queue-OK: {counter-cmd-queue-ok} X-Counter-CMD-Queue-Error: {counter-cmd-queue-error} X-Counter-CMD-Queue-Full: {counter-cmd-queue-full} X-Counter-Proxy: {counter-proxy} X-Counter-Proxy-OK: {counter-proxy-ok} X-Counter-Proxy-Error: {counter-proxy-error}

Qrox が処理を行った結果は HTTP:200 が返った上で以下が返されます。

{queue-total}
キュー使用量。
{counter-cmd-stat}
コマンド:STAT の回数。
{counter-cmd-queue}
クライアントからのリクエスト回数。
{counter-cmd-queue-ok}
クライアントからのリクエストをエンキュー(受け溜め)した回数。
{counter-cmd-queue-error}
クライアントからのリクエスト処理に失敗した回数。
{counter-cmd-queue-full}
キューがいっぱいでクライアントからのリクエストをエンキュー(受け溜め)できなかった回数。
{counter-proxy}
プロキシ処理をした回数。
{counter-proxy-ok}
プロキシ処理をした内、成功した回数。
{counter-proxy-error}
プロキシ処理をした内、失敗した回数。

設定リファレンス
<Qrox/>

Qrox設定のルート要素。

属性
[なし]
子要素
  • <Queue/>
  • <Proxy/>
  • <Response/>
  • <Stat/>
<Queue/>

リクエストを溜めるキューの設定をします。

属性
Capacity
キューの許容量を設定します。
キューの1リクエスト当たりのメモリ消費量は 3,104(Byte) です。
物理メモリ量を超えないように注意してください。
[Default:65536]
子要素
[なし]
<Proxy/>

Proxyに関して設定します。
<Proxy/>は複数、最大で256個指定できます。
1つの<Proxy/>に対して1つのスレッドが生成されます。
1つの<Proxy/>に対して1つの中継先を指定できます。
同じサーバーへ複数のスレッドで中継したい場合には同じ<Proxy/>を複数指定してください。

属性
Server
中継先のサーバーを指定してください。
(ex.)
<Proxy Server="192.168.0.68"/> <Proxy Server="192.168.0.69:8080"/>
中継先のサーバーへのアクセスにはブラウザからのリクエストがそのまま中継されます。
"HTTP_HOST"値もそのまま中継されますので同じホスト名でサイトを立てておいて下さい。
子要素
[なし]
<Response/>

Qroxのレスポンスを設定します。
デフォルトでは "Content-Length: 0" の "200 OK" を返答します。

(ex.) <Response File="response.png" ContentType="image/png"/>

属性
File
返答する画像やテキストのファイルを指定してください。
相対パス、絶対パスで記述できます。
ContentType
ファイルの ContentType を指定してください。
子要素
[なし]
<Stat/>

状況確認コマンド(STAT)に関して設定します。

状況確認コマンドにつける名前を指定します。
第3者にSTATコマンドをされないよう、独自の文字列にすることができます。
""(空文字列)を指定するとSTATコマンドは実行できません。
(ex.) <Stat>STAT-5166EB4U</Stat>
[Default:""]
子要素
[なし]
更新履歴
2010/03/11
  • Version: 1.0.0.0